用了springmvc为何JS,CSS等文件就是访问不到
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用了springmvc为何JS,CSS等文件就是访问不到相关的知识,希望对你有一定的参考价值。
那就是为什么我配置好web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示了
我们来看看我们配置的web.xml
1 <!-- springMVC核心配置 controller,viewResolver,HandlerMapping --> 2 <servlet> 3 <servlet-name>dispatcherServlet</servlet-name> 4 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 5 <init-param> 6 <param-name>contextConfigLocation</param-name> 7 <!--spingMVC的配置路径 --> 8 <param-value>classpath:spring-mvc.xml</param-value> 9 </init-param> 10 <load-on-startup>1</load-on-startup> 11 </servlet> 12 <servlet-mapping> 13 <servlet-name>dispatcherServlet</servlet-name> 14 <url-pattern>/</url-pattern> 15 </servlet-mapping>
这个就涉及到一个知识点了,就是url-pattern的 / 和 * 的区别了
这里我来引用一段别人的原话
url-pattern有5种配置模式:
(1)/xxx:完全匹配/xxx的路径
(2)/xxx/*:匹配以/xxx开头的路径,请求中必须包含xxx。
(3)/*:匹配/下的所有路径,请求可以进入到action或controller,但是转发jsp时再次被拦截,不能访问jsp界面。
(4).xx:匹配以xx结尾的路径,所有请求必须以.xx结尾,但不会影响访问静态文件。
(5)/:默认模式,未被匹配的路径都将映射到刺servlet,对jpg,js,css等静态文件也将被拦截,不能访问。
因此,如果我们一开始就采用了/的方式,那么就需要补上如下的web.xml配置来让静态文件可访问了
<!-- static resources --> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <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>*.html</url-pattern> </servlet-mapping>
以上是关于用了springmvc为何JS,CSS等文件就是访问不到的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC中css,js,图片等静态资源被拦截的解决办法