SpringBoot Web管理及扩展

89 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

0.概述

之前在springmvc.xml里面的配置

  • 扫描controller
  • 配置映射器和适配器
  • 配置文件上传
  • 配置视图解析器
  • 配置静态资源
  • 配置拦截器
  • 配置欢迎页面web.xml
  • 配置前端控制器web.xml
  • 配置编码过滤器web.xml

1. 前端控制器的自动管理

  • WebMvcAutoConfiguration -> DispatcherServletAutoConfiguration.class

image.png

  • 相当于在web.xml中配置了一个servlet

image.png

2.控制器的自动管理

自动扫描启动类层及以下包

  • @SpringBootApplication -> @EnableAutoConfiguration -> @AutoConfigurationPackage -> @Import(AutoConfigurationPackages.Registrar.class)

3.视图解析器的自动管理

WebMvcAutoConfiguration

image.png

这个自动配置类相当于一个视图解析器的收集器,它会收集整个IOC容器里面所有实现了ViewResolver接口的对象{@Bean}

  • 如何自定义前缀和后缀

  • 配置文件中配置前缀后缀 application.yml/application.perproties

  • springboot内嵌的tomcat默认不支持jsp

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
    </dependency>
    <!--加入内嵌入tomcat对jsp的支持 -->
    <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
    </dependency>
    <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.6.1</version>
            <scope>provided</scope>
    </dependency>

4.文件上传和下载的视图解析器

  • SpringBoot 默认自动配置了文件视图解析器 MultipartAutoConfiguration -> MultipartProperties

  • 配置文件中修改默认值

spring:
  servlet:
    multipart:
      enabled: true
      location: D:/
      max-file-size: 10MB  #MB只能大写
      max-request-size: 5MB

5.消息转化和格式化转化

Converter: 转换器; public String hello(User user):类型转换使用Converter

Formatter: 格式化器; 2017.12.17===Date;

  • 消息转化【接收页面参数并转化】
@Override
public  void  addFormatters (FormatterRegistryregistry){
        ApplicationConversionService.addBeans(registry,this.beanFactory);
}

image.png

  • 格式化【接收页面参数并按某种格式格式化--如日期】

  • 如果在项目中使用mvc:data-format 那么在Controller里面接收的日期格式都是 yyyy-MM-dd HH:mm:ss如果页面只传。yyyy-MM-dd 那么报错,如何解决: @DateTimeFormat(partten=”yyyy-MM-dd”) 就近原则

6.注册视图控制器

做项目时,如何跳转到主页面,以前是在controller里面定义一个空方法

public String toIndex(){
        Return “index”;
}

编写配置类实现 WebMvcConfigurer 重写 addViewController 方法

7.注册格式化器

编写配置类实现 WebMvcConfigurer 重写 addFormatters 方法

  • 可以使用配置文件和注解解决

spring: mvc: date-format: yyyy-MM-dd HH:mm:ss #当前端提交字符串的日期到后台时进行格式转化

  • 可以使用 @DateTimeFormat(partten=“yyyy-MM-dd”) 解决特定日期字符 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss #当后端转化json串到前端时对日期进行格式化 time-zone: GMT+8