这两天遇到了静态资源无法加载的问题,尝试了半天,得出了一些结果,这里做一个总结。
首先为什么会出现这样的情况:因为在web.xml文件中,配置了dispatchServlet,拦截了所有请求交给springmvc来处理。
以下方法可能在不同环境下结果不同,仅为我本地测试的结果
- 第一种情况:如果你的静态资源文件不在WEB-INF下却加载不了
(1)在 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>
需要加载什么类型的文件就添加对应后缀结尾的url-parttern
(2)在 springmvc.xml 中配置如下代码
<mvc:default-servlet-handler/>
默认让web容器处理静态文件,非静态的再交给dispatchServlet处理
- 第二种情况:如果你的静态资源文件在WEB-INF下加载不了
(3) 在 springmvc.xml 中配置如下代码
<mvc:resources location="/WEB-INF/css/" mapping="/css/**" />
<mvc:resources location="/WEB-INF/js/" mapping="/js/**" />
注意location开头和结尾必须都有 / ,不然会出错。
如果上面的方法混用,也可能会出现无法加载资源文件的情况。