解决SpringMVC拦截器拦截静态资源的问题。跳转后页面样式、格式乱,访问不到静态资源等问题

问题

      在使用SpringMVC进行开发的时候,遇到了以下代码不能执行的情况。关键是样式丢失,图片什么的也都丢失,而且我已经正确导入了JQuery框架,浏览器报**SyntaxError: expected expression, got <**错误。
在这里插入图片描述
      在 springMVC中提到 Interceptor拦截器是会拦截静态资源的 比如html js css image这类,虽然都是页面 但是html属于静态资源,jsp不属于,所以这里发现,只要配置拦截器,就会出现页面错乱的情况。
在这里插入图片描述
一旦注释这段配置代码,就会正常显示。

解决

通过测试与上网查找,最终发现,是拦截器这里对资源进行了拦截。
原理:通过Request获取请求的uri进行分析过滤。

防止SpringMVC拦截器拦截js等静态资源文件

SpringMVC提供mvc:resources来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决:

  • 方案一、拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml)

  • 在这里插入图片描述

  • 方案二、使用默认的静态资源处理Servlet处理静态资源(涉及spring-mvc.xml, web.xml)

    • 在spring-mvc.xml中启用默认Servlet在这里插入图片描述
    • 在web.xml中增加对静态资源的处理
  • 在这里插入图片描述

  • 方案三、修改Spring的全局拦截设置为.do的拦截(涉及web.xml)*

  • 在这里插入图片描述

三种方案的优劣分析

1. 第一种方案配置比较臃肿,多个拦截器时增加文件行数,不推荐使用;

2. 第二种方案使用默认的Servlet进行资源文件的访问,Spring拦截所有请求,然后再将资源文件交由默认的Sevlet进行处理,性能上少有损耗;

3.第三种方案Spring只是处理以’.action’结尾的访问,性能上更加高效,但是再访问路径上必须都以’.action’结尾,URL不太文雅;

综上所述,推荐使用第二和第三种方案

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子非Yu@Itfuture

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值