springmvc、springboot靜態資源訪問配置

如何訪問項目中的靜態資源?javascript

一.springmvc

springmvc中訪問靜態資源,若是DispatcherServlet攔截的爲"",那麼靜態資源的訪問也會交給DispatcherServlet處理,就會由於找不到資源的映射出現404的問題:css

No mapping found for HTTP request with URI [/templates/file/test.xlsx] in DispatcherServlet with name 'dispatcherServlet' 

解決辦法:java

1.服務器的defaultServlet

以tomcat爲例,在 web.xml中增長配置web

<servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.jpg</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.js</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.css</url-pattern>
 </servlet-mapping>  
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.xlsx</url-pattern>
 </servlet-mapping>  

 

2.spring的mvc:resources 配置

spring在3.0.4以後提供了對系統靜態資源文件訪問spring

<mvc:resources mapping="/files/**" location="/files/" /> 

使用 <mvc:resources/> 元素,把 mapping 的 URI 註冊到 SimpleUrlHandlerMapping的urlMap 中,key 爲 mapping 的 URI pattern值,而 value爲 ResourceHttpRequestHandler,這樣就巧妙的把對靜態資源的訪問由 HandlerMapping 轉到ResourceHttpRequestHandler 處理並返回,因此就支持 classpath 目錄, jar 包內靜態資源的訪問.
另外須要注意的一點是,不要對 SimpleUrlHandlerMapping 設置 defaultHandler. 由於對 static uri 的 defaultHandler 就是ResourceHttpRequestHandler,不然沒法處理static resources request.tomcat

二.springboot

在application.properties增長配置:springboot

spring.mvc.static-path-pattern=/dist/** spring.resources.static-locations=classpath:webapp/dist/ 

spring.mvc.static-path-pattern:指定靜態文件類型
spring.resources.static-locations:指定靜態文件路徑服務器

相關文章
相關標籤/搜索