SpringMVC静态资源无法访问的一个奇怪的问题
写下这个问题,是希望与我一同为这个奇怪问题不知所措时,也许这就是问题的答案。
这几日,在用SpringMVC开发一个平台是,发现静态资源无法访问,找了很多资料,通过修改配置文件,重启Web容器,通过SpringMVC映射,都无法访问一些文件,一些我认为特殊的文件,比如CSS,JS可以访问,图片确访问不了。最好我发现是:
由于Eclipse中的Server(Tomcat)在读出资源文件时,如果在Eclipse中没有刷新,那么这写文件对这个Server而言,也是不可见的,无论如何处理我的电脑中的文件,Server总是出现文件无法访问的错误。只需在Eclipse中刷新一下就可以了,不刷新,Eclipse内置的Tomcat就无法访问文件(好奇怪的特性……)。
这个问题很简单,可是,总会纠结于技术问题本身:缺省Servet配置,SpringMVC缺省映射,资源映射等等。
在下也把自己在解决问题时静态资源无法访问的问题罗列如下:
-(1)在web.xml中配置WEB容器直接处理静态资源
比如:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
假设静态资源在webapp目录下,可以通过Tomcat来处理/static/*目录下的所有资源。
-(2)利用SpringMVC配置缺省请求处理器处理静态资源
<mvc:default-servlet-handler/>
在SpringMVC配置文件中通过上面的配置实现缺省资源的访问。
-(3)利用SpringMVC资源映射来映射在WEB-INF目录下的静态资源
<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>
还可以通过SpringMVC资源映射的方式来处理静态资源的访问。
此事,静态资源需要放置在WEB-INF目录下。
较好的参考资源:
springMVC对静态资源访问的处理(http://my.oschina.net/hnqingping1255/blog/415575)