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處理靜態資源。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM