zoukankan      html  css  js  c++  java
  • Spring MVC中配置静态资源处理的三种方式和区别

    spring mvc中,DispatcherServlet核心servlet配置的url-pattern为"/",这就导致所有的请求都会经过DispatcherServlet,但是当项目访问静态资源时,如.html,.js,.css等文件,这些应该不需要经过核心servlet的,所以为了解决这一问题,在项目中就需要对静态资源处理进行配置。

    通常配置静态资源处理有两种种方式

    配置

    第一种:交由web容器默认的servlet处理

    例如Tomcat的DefaultServlet

    在xml配置文件中:

    <mvc:default-servlet-handler/>

    第二种:由spring mvc自己处理静态资源

    在spring3.0.4版本后,提供了mvc:resources配置

    在xml配置文件中:

    <!-- mapping属性用于映射静态资源的url -->
    <!-- location属性用于指定静态资源的相对路径,这个路径可以指定多个,中间用逗号隔开 -->
    <mvc:resources mapping="/page/**" location="/static/,/aa/"/>

    在配置类中:

    @Configuration
    /**
     * 报扫描,扫描有spring注解的类
     */
    @ComponentScan("edu.nf.ch11")
    /**
     * 启用mvc注解处理器
     */
    @EnableWebMvc
    /**
     * 扩展spring mvc配置,需要实现WebMvcConfigurer接口
     */
    public class SpringConfig implements WebMvcConfigurer {
    
        /*
            配置静态资源处理的两种方式,两种方式任选其一
        */
        
        /**
         * 方式一:使用默认servlet处理静态资源
         */
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            //启用默认servlet支持
            configurer.enable();
        }
    
        /**
         * 方式二:使用spring mvc处理静态资源
         * @param registry
         */
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/page/**").addResourceLocations("/static/");
        }
    }

    区别

    通俗来说,使用mvc:default-servlet-handler是将请求的静态资源经由spring mvc交回web容器本身默认的servlet去处理,而mvc:resources就是直接由spring mvc处理静态资源。

     

     

  • 相关阅读:
    编码上的小改进
    自定义HttpFilter模块完善
    Log4Net日志分类和自动维护
    也来写写基于单表的Orm(使用Dapper)
    要知道的DbProviderFactory
    仿Orm 自动生成分页SQL
    【问题帖】压缩图片大小至指定Kb以下
    [leetcode]Find Minimum in Rotated Sorted Array
    [leetcode]Maximum Product Subarray
    join
  • 原文地址:https://www.cnblogs.com/zhangcaihua/p/12829083.html
Copyright © 2011-2022 走看看