SpringMVC+shiro项目静态资源不能访问:Failed to load resource: the server responded with a status of 404

本文介绍了一种SpringMVC结合Shiro框架项目中遇到的静态资源加载失败问题及其解决方法,主要原因是SpringMVC拦截了静态资源、Shiro配置错误或页面路径错误。

一、问题描述


最近一直在学开源项目,然后在网上找个了SpringMVC+shiro的项目,然后导入到eclipse中,一运行,前用页面报错如下,静态文件全都找不到:

Failed to load resource: the server responded with a status of 404 (Not Found)



项目结构如下:



Shiro配置文件如下:

<property name="filterChainDefinitions">  
	<value>
		/page/login/** = anon
		/statics/** = anon
		/api/** = anon
		/login.html = anon
		/index_bak.html = anon
		/sys/login = anon
		/captcha.jpg = anon
		/** = authc
	</value>
</property>


二、解决方法


出现这个错误,无非就两种原因引起的:


1.SpringMVC拦截了静态资源

2.shiro的拦截器配置错了

3.页面中路径写错了


这里采用了排除法来进行测试,首先,把shiro拦截器去掉,不让他起作用,然后测试,发现也不能访问,这样就可以排除是shiro的问题了,如果SpringMVC能访问静态资源,而Shiro不能,那就说明是shiro的问题,还有中测试方式就是之后访问报404的js或css看能不能访问!!


(一)、如果SpringMVC烂拦截了的话可以做如下设置,使用默认的静态资源处理Servlet处理静态资源(涉及spring-mvc.xml, web.xml),在spring-mvc.xml中启用默认Servlet

 <mvc:default-servlet-handler/>


在web.xml中增加对静态资源的处理

<servlet-mapping>    
    <servlet-name>default</servlet-name>    
    <url-pattern>*.js</url-pattern>    
    <url-pattern>*.css</url-pattern>    
    <url-pattern>/assets/*"</url-pattern>    
    <url-pattern>/images/*</url-pattern>    
</servlet-mapping>

(二)、而如果是shiro的话,基本上就是拦截器写错了,多注意下路径什么的。


(三)、我这边的问题就出在这里。。由于他页面用的是html而不是jsp,所以发现他直接写的是相对路径。。。


如果是jsp页面倒好解决,通过引入el表达式来解决

${pageContext.request.contextPath}/xxx

但在html页面中不能用,直接显示出来,并没有解析。。最后只能通过修改在tomcat中发布项目名来解决,也就是说去除项目名直接:localhost:8080/ 来访问项目就行了。。。




在eclipse中把path直接设置为空就行了。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值