本章目标
了解WebMvcConfigurer作用
IDEA实现接口方法
利用WebMvcConfigurer配置项目的CORS等
WebMvcConfigurer的作用
WebMvcConfigurer: 直接点就是web的配置都可以在这类里面干
可以查看spring的文档, 其定义了很多供重构的方法
利用WebMvcConfigurer配置项目的CORS等
在上节的项目中新建一个MyConfiguration实现WebMvcConfigurer
public class MyConfiguration implements WebMvcConfigurer {}
IDEA实现接口方法
快捷键 CTRL+O , 会提示所有需要实现的接口
springboot内容协商配置(configureContentNegotiation)
内容协商:在 HTTP 协议中,内容协商是这样一种机制,通过为同一 URI 指向的资源提供不同的展现形式,可以使用户代理选择与用户需求相适应的最佳匹配(例如,文档使用的自然语言,图片的格式,或者内容编码形式)。
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
/* 是否通过请求Url的扩展名来决定media type */
configurer.favorPathExtension(true)
/* 不检查Accept请求头 */
.ignoreAcceptHeader(true)
.parameterName("mediaType")
/* 设置默认的media yype */
.defaultContentType(MediaType.TEXT_HTML)
/* 请求以.html结尾的会被当成MediaType.TEXT_HTML*/
.mediaType("html", MediaType.TEXT_HTML)
/* 请求以.json结尾的会被当成MediaType.APPLICATION_JSON*/
.mediaType("json", MediaType.APPLICATION_JSON);
}
上面代码说白了就是告诉系统什么类型用什么来标识
spring boot配置视图解析(configureViewResolvers)
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/jsp/", ".jsp");
registry.enableContentNegotiation(new MappingJackson2JsonView());
}
看上去是不是感觉很熟悉 ,没错,在application.properties里面的spring.mvc.view.prefix以及spring.mvc.view.suffix, 如果配置了视图解析可以不需要在application.properties中配置prefix,suffix这两项了 ,测试结果和之前是一样的 http://127.0.0.1:8083/index
CORS配置
https://www.jianshu.com/p/0b928da37fc8
资源处理(addResourceHandlers)
当你请求http://localhost:8083/resource/1.png时,会把/WEB-INF/static/1.png返回。注意:这里的静态资源是放置在WEB-INF目录下的。
然后完整的代码如下:
@Configuration
public class MyConfiguration implements WebMvcConfigurer {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
/* 是否通过请求Url的扩展名来决定media type */
configurer.favorPathExtension(true)
/* 不检查Accept请求头 */
.ignoreAcceptHeader(true)
.parameterName("mediaType")
/* 设置默认的media yype */
.defaultContentType(MediaType.TEXT_HTML)
/* 请求以.html结尾的会被当成MediaType.TEXT_HTML*/
.mediaType("html", MediaType.TEXT_HTML)
/* 请求以.json结尾的会被当成MediaType.APPLICATION_JSON*/
.mediaType("json", MediaType.APPLICATION_JSON);
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/jsp/", ".jsp");
registry.enableContentNegotiation(new MappingJackson2JsonView());
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resource/**").addResourceLocations("/WEB-INF/static/");
}
}
好了, 大致都是这样, 有需要的话直接在文档中看看就好, 只要记住这货就是干这活的就可以了, 下一章介绍注解,