美文网首页springboot
第三章,springboot中的WebMvcConfigurer

第三章,springboot中的WebMvcConfigurer

作者: 毛仑上保罗先生 | 来源:发表于2018-04-18 12:48 被阅读0次

    本章目标

    了解WebMvcConfigurer作用
    IDEA实现接口方法
    利用WebMvcConfigurer配置项目的CORS等

    WebMvcConfigurer的作用

    WebMvcConfigurer: 直接点就是web的配置都可以在这类里面干
    可以查看spring的文档, 其定义了很多供重构的方法


    image.png

    利用WebMvcConfigurer配置项目的CORS等

    在上节的项目中新建一个MyConfiguration实现WebMvcConfigurer

    public class MyConfiguration implements WebMvcConfigurer {}
    

    IDEA实现接口方法

    快捷键 CTRL+O , 会提示所有需要实现的接口


    image.png

    springboot内容协商配置(configureContentNegotiation)

    内容协商:在 HTTP 协议中,内容协商是这样一种机制,通过为同一 URI 指向的资源提供不同的展现形式,可以使用户代理选择与用户需求相适应的最佳匹配(例如,文档使用的自然语言,图片的格式,或者内容编码形式)。

    image.png
    @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

    image.png

    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/");
        }
    }
    
    

    好了, 大致都是这样, 有需要的话直接在文档中看看就好, 只要记住这货就是干这活的就可以了, 下一章介绍注解,

    相关文章

      网友评论

        本文标题:第三章,springboot中的WebMvcConfigurer

        本文链接:https://www.haomeiwen.com/subject/rdsmkftx.html