springmvc拦截器interceptors

springmvc拦截器能够对请求的资源路径进行拦截,极大的简化了拦截器的书写。但是,千万千万要注意一点:静态资源的放行。
上代码:
<mvc:resources mapping="/resources/**" location="/static/resources" /> <mvc:resources mapping="/static/css/**" location="/static/css/" /> <mvc:resources mapping="/static/images/**" location="/static/images/" /> <mvc:resources mapping="/static/js/**" location="/static/js/" />
<mvc:interceptors>
<!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求
<bean class="com.myTree.interceptor.LoginInterceptor" />-->
<mvc:interceptor>
<mvc:mapping path="/**" />
<!-- 需排除拦截的地址 -->
<mvc:exclude-mapping path="/Login"/>
<mvc:exclude-mapping path="/login"/>
<mvc:exclude-mapping path="/sattic/**"/>
<!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->
<beans:bean class="com.myTree.interceptor.LoginInterceptor" >
</beans:bean>
</mvc:interceptor>
</mvc:interceptors>
问题来了,在请求jsp页面的时候,你的静态资源的访问仍然会被自定义拦截器拦截,这会导致程序运行的效率大大下降,还会不停的跳转到拦截器的逻辑。主要原因是
<mvc:mapping path="/**" />
会对所有的请求资源进行拦截,虽然静态资源已经排除了,但还是会被拦截到。
如何解决这个bug呢?
主要有三种方式:
1、修改请求的url地址。
如果请求的url地址都是以*.do结尾,那么拦截器中的配置可以变为拦截以do结尾的资源,静态资源自然就不会被拦截到了;
2、在自定义拦截器中对资源进行判断,如果满足需要排除的资源,就进行放行。
<!-- 拦截器配置 -->
<mvc:interceptors>
<!-- session超时 -->
<mvc:interceptor>
<mvc:mapping path="/*/*"/>
<bean class="com.myTree.interceptor.LoginInterceptor">
<property name="allowUrls">
<list>
<!-- 如果请求中包含以下路径,则不进行拦截 -->
<value>/login</value>
<value>/js</value>
<value>/css</value>
<value>/image</value>
<value>/images</value>
</list>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>
在拦截器中设定不拦截的属性:
/**
* 处理登录拦截器
*/
public class LoginInterceptor implements HandlerInterceptor{
public String[] allowUrls;//还没发现可以直接配置不拦截的资源,所以在代码里面来排除
public void setAllowUrls(String[] allowUrls) {
this.allowUrls = allowUrls;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {<pre name="code" class="java"> <span style="white-space:pre"> </span>String requestUrl = request.getRequestURI().replace(request.getContextPath(), "");
System.out.println(requestUrl);
if(null != allowUrls && allowUrls.length>=1){
for(String url : allowUrls) {
if(requestUrl.contains(url)) {
return true;
}
}
}
3、设置web.xml中的默认拦截器,不拦截静态资源
在springmvc的Dispatcher中配置<mvc:default-servlet-handler />(一般Web应用服务器默认的Servlet名称是"default",所以这里我们激活Tomcat的defaultServlet来处理静态文件,在web.xml里配置如下代码即可:)
<!--该servlet为tomcat,jetty等容器提供,将静态资源映射从/改为/static/目录,如原来访问http://localhost/foo.css,现在http://localhost/static/foo.css --> <!-- 不拦截静态文件 --> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/js/*</url-pattern> <url-pattern>/css/*</url-pattern> <url-pattern>/images/*</url-pattern> <url-pattern>/fonts/*</url-pattern> </servlet-mapping>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring拦截静态资源
# spring拦截器静态资源
# 解决springMVC 跳转js css图片等静态资源无法加载的问题
# 防止SpringMVC拦截器拦截js等静态资源文件的解决方法
# SpringMVC访问静态资源的三种方式小结
# SpringMVC访问静态资源的方法
# 详解SpringMVC中设置静态资源不被拦截的问题
# SpringMVC 拦截器不拦截静态资源的三种处理方式方法
# SpringMVC中处理静态资源的过程详解
# 拦截器
# 自定义
# 器中
# 来了
# 还没
# 还会
# 要注意
# 会对
# 可以直接
# 主要原因
# 中对
# 如何解决
# 这会
# 大家多多
# 跳转到
# 主要有三种
# 简化了
# list
# jsp
# login
相关文章:
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
宝塔面板创建网站无法访问?如何快速排查修复?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何安全更换建站之星模板并保留数据?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
专业网站建设制作报价,网页设计制作要考什么证?
如何确保西部建站助手FTP传输的安全性?
如何用5美元大硬盘VPS安全高效搭建个人网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
宁波免费建站如何选择可靠模板与平台?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
深圳网站制作平台,深圳市做网站好的公司有哪些?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
C++时间戳转换成日期时间的步骤和示例代码
怎么将XML数据可视化 D3.js加载XML
如何高效配置IIS服务器搭建网站?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
如何选购建站域名与空间?自助平台全解析
如何快速搭建支持数据库操作的智能建站平台?
网站制作壁纸教程视频,电脑壁纸网站?
宁波自助建站系统如何快速打造专业企业网站?
建站之星安装后如何自定义网站颜色与字体?
建站之星如何实现网站加密操作?
建站之星如何修改网站生成路径?
Swift中循环语句中的转移语句 break 和 continue
如何通过服务器快速搭建网站?完整步骤解析
如何在企业微信快速生成手机电脑官网?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
微课制作网站有哪些,微课网怎么进?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何在IIS中新建站点并配置端口与物理路径?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
建站之星导航菜单设置与功能模块配置全攻略
如何快速搭建高效服务器建站系统?
建站三合一如何选?哪家性价比更高?
如何快速生成ASP一键建站模板并优化安全性?
定制建站方案优化指南:企业官网开发与建站费用解析
开封网站制作公司,网络用语开封是什么意思?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
内部网站制作流程,如何建立公司内部网站?
重庆市网站制作公司,重庆招聘网站哪个好?
如何高效完成自助建站业务培训?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
*请认真填写需求信息,我们会在24小时内与您取得联系。