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处理静态资源。

 

 

原文地址:https://www.cnblogs.com/zhangcaihua/p/12829083.html