静态资源访问404解决办法
在进行web开发的时候用了spring相关框架之后有时候会发现静态资源访问出现404错误,对框架不太熟悉的新人往往会搞得一头雾水(我刚开始学习框架的时候弄得一脸懵X),不用框架还好好的,为啥一用框架就出错呢。经常用框架的人一般不会遇到这个问题。

那么怎么解决呢。先找原因,原因就是静态文件被拦截了,外部不可见,一般都是因为配置mvc-dispatcherServlet拦截“/”才这样的。说白了就是没有针对静态文件作相关配置,原因找到了,接下来就简单了。

这里有两个简单的方法,一个是利用Tomcat的defaultservlet来处理静态资源,一个是直接在spring中配置静态资源映射

defaultServlet配置
其配置比较简单,但是要注意的是其位置一定要在dispatcherServlet之前,针对自己项目的静态资源合理配置,配置实例如下:
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.xml</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>  
但有时候你发现根目录下有个html文件你想从外部直接访问,于是按照上面的配置将 *.html交给defaultServlet处理了,然后重启Tomcat,杯具来了,所有路径都404了。显然此处就不能这么弄了,这样配置之后影响到springmvc的代理了,所以直接用下面的方法吧。

springmvc中配置静态资源映射
很简单,只需配置mvc:resources标签就行了,比如根目录“/”下的静态文件配置如下:
<mvc:resources mapping="/*.xml" location="/"/>
<mvc:resources mapping="/*.ico" location="/"/>
<mvc:resources mapping="/*.html" location="/"/>
<mvc:resources mapping="/*.txt" location="/"/>

同样针对当前项目合理配置静态资源类型即可,而且可以发现配置 html 文件映射也不会出错了,问题迎刃而解。
 
It's
欢迎访问本站,欢迎留言、分享、点赞。愿您阅读愉快!
*转载请注明出处,严禁非法转载。
https://www.devsong.org
QQ留言 邮箱留言
头像
引用:
取消回复
提交
涂鸦
涂鸦
热门