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)

posted @ 2017-10-20 19:02  猴子1  阅读(422)  评论(0编辑  收藏  举报