SpringMVC

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页面数据展示

  1. 制作SpringMVC控制器,并通过PostMan测试接口功能
    img

  2. 设置对静态资源的访问放行
    img

  3. 前端页面通过异步提交访问后台控制器
    img

posted @ 2023-10-12 17:58  Cold的窝  阅读(12)  评论(0)    收藏  举报