<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:application-web.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
后来发现原来这个还与org.springframework.web.servlet.DispatcherServlet的中的url-pattern配置有关
原因是:使用 / 拦截了所有的请求,会影响到静态资源文件的获取,这样就需要用mvc:default-servlet-handler和mvc:resources来帮住分类完成获取静态资源的责任
解决方案:
<mvc:resources mapping="/images/**" location="/WEB-INF/images/" cache-period="31556926"/> <mvc:resources mapping="/js/**" location="/WEB-INF/js/" cache-period="31556926"/> <mvc:resources mapping="/css/**" location="/WEB-INF/css/" cache-period="31556926"/>
使用<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。
原文地址:https://www.cnblogs.com/hollowcabbage/p/9037870.html
时间: 2024-11-09 14:54:22