Spring 和 Spring MVC 学习

72 阅读2分钟

Spring 和 Spring MVC学习

一、Spring 事务

1.1 事务简介

  • 事务作用︰在数据层保障一系列的数据库操作同成功同失败
  • Spring事务作用︰在数据层或业务层保障一系列的数据库操作同成功同失败

案例:银行账户转账

  1. 在业务层接口添加Spring事务管理
public interface AccountService {
    /**
     * 转账操作
     * @param out 传出方
     * @param in 传入方
     * @param money 金额
     */
    @Transactional
    public void transfer(String out, String in, Double money);
}
  1. Jdbc配置文件中设置事务管理器
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource){
    DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
    transactionManager.setDataSource(dataSource);
    return transactionManager;
}
  1. 在Spring配置文件中开启事务
@Configuration
@ComponentScan("com.lyq")
@Import({MybatisConfig.class, JdbcConfig.class})
@PropertySource("jdbc.properties")
@EnableTransactionManagement
public class SpringConfig {
}

1.2 Spring 事务角色

  • 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法
  • 事务协调员∶加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法

案例:转账业务追加日志

image.png

1.2.1 事务传播行为

image.png

二、SpringMVC

2.1 SpringMVC 简介

  • SpringMVC是一种表现层框架技术
  • SpringMVC用于进行表现层功能开发

2.2 SpringMVC 入门案例

  1. 首先创建 Maven 的 webapp 功能
  2. 创建 java 文件夹,设置为源目录 image.png
  3. 创建 controller 文件夹编写文件
// 2. 定义 Controller
// 2.1 使用 Controller 定义 bean
@Controller
public class UserController {
    // 2.2 设置当前操作访问路径
    @RequestMapping("/save")
    // 2.3 设置当前操作的返回值类型
    @ResponseBody
    public String save(){
        System.out.println("user save....");
        return "{'module': 'springmvc'}";
    }
}
  1. 引入依赖和tomcat插件

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.2.10.RELEASE</version>
</dependency>


<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <port>80</port>
    <path>/</path>
  </configuration>
</plugin>
  1. 编写SpringConfig配置类
// 3. 创建 springmvc 配置文件,加载 controller 对应的 bean
@Configuration
@ComponentScan("com.lyq.controller")
public class SpringMvcConfig {
}
  1. 告诉SpringMVC,编写Servlet配置类,继承AbstractDispatcherServletInitializer

// 4. 定义一个 Servlet 容器启动的配置类,在里面加载 spring 配置
public class ServletContainersInit extends AbstractDispatcherServletInitializer {
    // 加载 springMVC 容器配置
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }
    // 设置那些请求归属 springMVC 处理
    @Override
    protected String[] getServletMappings() {
        // 所有请求
        return new String[]{"/"};
    }
    // 加载 spring 容器配置
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}
  1. 添加tomcat

image.png

2.3 Spring 和 SpringMVC 加载

image.png

image.png

  • 简化开发 image.png

2.4 get 和 post请求

2.4.1 中文乱码过滤器

// 乱码处理
@Override
protected Filter[] getServletFilters() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding("utf-8");
    return new Filter[]{filter};
}