如何訪問項目中的靜態資源?javascript
springmvc中訪問靜態資源,若是DispatcherServlet攔截的爲"",那麼靜態資源的訪問也會交給DispatcherServlet處理,就會由於找不到資源的映射出現404的問題:css
No mapping found for HTTP request with URI [/templates/file/test.xlsx] in DispatcherServlet with name 'dispatcherServlet'
解決辦法:java
以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>
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
在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:指定靜態文件路徑服務器