springmvc、springboot靜態資源訪問配置
阿新 • • 發佈:2019-05-09
ati 無法 ssp simple test javascrip spa handle rop
如何訪問項目中的靜態資源?
一.springmvc
springmvc中訪問靜態資源,如果DispatcherServlet攔截的為"",那麽靜態資源的訪問也會交給DispatcherServlet處理,就會因為找不到資源的映射出現404的問題:
No mapping found for HTTP request with URI [/templates/file/test.xlsx] in DispatcherServlet with name ‘dispatcherServlet‘
解決辦法:
1.服務器的defaultServlet
以tomcat為例,在 web.xml中增加配置
<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之後提供了對系統靜態資源文件訪問
<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.
二.springboot
在application.properties增加配置:
spring.mvc.static-path-pattern=/dist/**
spring.resources.static-locations=classpath:webapp/dist/
spring.mvc.static-path-pattern:指定靜態文件類型
spring.resources.static-locations:指定靜態文件路徑
springmvc、springboot靜態資源訪問配置