1. 程式人生 > >springmvc、springboot靜態資源訪問配置

springmvc、springboot靜態資源訪問配置

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靜態資源訪問配置