如何访问项目中的静态资源?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:指定静态文件路径服务器