SpringMVC

发布时间 2023-10-12 18:03:00作者: Cold的窝

1.1 SpringMVC概述

  • SpringMVC是一种基于Java实现MVC模型的轻量级Web框架
  • 优点
    • 使用简单,开发便捷 (相比于Servlet)

1.2 SpringMVC快速入门

  1. 使用SpringMVC技术需要先导入SpringMVC坐标与Servlet坐标
<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>
  1. 创建SpringMVC控制器类 (等同于Servlet功能)
@Controller
public class UserController {
  @RequestMapping("/save")
  @ResponseBody
  public String save(){
    System.out.printIn("user save);
    return "{'info':'springmvc'}";
  }
}
  1. 初始化SpringMVC环境 (同Spring环境),设定SpringMVC加载对应的bean
@Configuration
@ComponentScan("love.iloveworld.controller")
public class SpringMvcConfig {
}
  1. 初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
  protected WebApplicationContext createServletApplicationContext() {
    AnnotationConfigwebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.register(SpringMvcConfig.class);
    return ctx;
  }

  protected Stringl] getServletMappings() {
    return new String[]{"/"};
  }
  protected WebApplicationContext createRootApplicationContext() {
    return null;
  }

  1. 运行程序
    加载tomcat插件,在运行自定义tomcat7:run
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <port>80</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

1.3 请求与响应

规避多模块请求冲突问题

1.3.1 请求传参


1.3.1.1 POST请求中文乱码处理

解决方案:为web容器添加过滤器并指定字符集,Spring-web包中提供了专用的字符过滤器

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherSeryletInitializer{
// 配字符编码过滤器
  protected Filter[] getServletFilters() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding("utf-8");
    return new Filter[]{filter};
  }
}

1.3.1.2 普通传参

1.3.1.3 POJO传参或嵌套POJO

1.3.1.4 数组传参

1.3.1.5 集合传参

1.3.1.6 总结记忆

数据传参默认使用变量名对应,若对应不上的就加个@RequestParam指定数据对应就行了!

1.3.2 传json参数

1.3.2.1 导入json坐标

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.0</version>
</dependency>

1.3.2.2 核心配置文件中启动EnableWebMvc

1.3.2.3 接受请求中的json数据

1.3.3 @RequestParam 和 @RequestBody 的区别

1.3.4 数据格式转换

1.3.4.1 时间转换


内部工作原理: Converter接口

1.3.5 响应

工作原理:HttpMessageConverter接口

1.4 REST 风格


1.4.1 RESTful快速入门

  1. 设定http请求动作(动词)
    img

  2. 设定请求参数(路劲变量)
    img

总结
img
img

1.4.2 REST简化开发

  1. 返回值简化
    img
  2. 参数接受简化
    img

img

1.4.3 RESTful页面数据展示