携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
0.概述
之前在springmvc.xml里面的配置
- 扫描controller
- 配置映射器和适配器
- 配置文件上传
- 配置视图解析器
- 配置静态资源
- 配置拦截器
- 配置欢迎页面web.xml
- 配置前端控制器web.xml
- 配置编码过滤器web.xml
1. 前端控制器的自动管理
- WebMvcAutoConfiguration -> DispatcherServletAutoConfiguration.class
- 相当于在web.xml中配置了一个servlet
2.控制器的自动管理
自动扫描启动类层及以下包
- @SpringBootApplication -> @EnableAutoConfiguration -> @AutoConfigurationPackage -> @Import(AutoConfigurationPackages.Registrar.class)
3.视图解析器的自动管理
WebMvcAutoConfiguration
这个自动配置类相当于一个视图解析器的收集器,它会收集整个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);
}
-
格式化【接收页面参数并按某种格式格式化--如日期】
-
如果在项目中使用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