说明:
(1)本篇博客合理性解释:
● 在【Spring MVC拦截器1:拦截器入门一:拦截器(interceptor)简介;拦截器开发流程简介;演示了拦截器最基本的配置流程;】中,已经展示了拦截器的基本使用流程,了解了【preHandle()、postHandle()、afterCompletion()方法的基本情况】;但是拦截器在实际时,还有很多问题需要解决:为此,写了本篇博客;
(2)本篇博客的代码,沿用自【Spring MVC拦截器1:拦截器入门一:拦截器(interceptor)简介;拦截器开发流程简介;演示了拦截器最基本的配置流程;】;中的【interceptor工程】;
(3)本篇博客主要内容:
● 一个话题:如何让拦截器不拦截某些url;由此引出了【<mvc:exclude-mapping path=""/>】标签;
● 多拦截器时的执行顺序;
● 拦截器的perHandle()方法的return值;(如果return false,那么拦截器就相当于一个“阻断器”);
目录
一:标签:设置【不拦截的url】;<mvc:exclude-mapping path=""/>一:标签:设置【不拦截的url】;
1.先看一个客观情况:只要一个资源的url符合“拦截器的path”,那么访问该资源的时候,这个请求就会被拦截器处理;
2.通过【<mvc:exclude-mapping path=""/>2.通过【
3.在实际开发中,一种很好的开发经验:对于静态资源:可以把静态资源放在特定的目录(如resources目录)中,来简化【<mvc:exclude-mapping path=""/>3.在实际开发中,一种很好的开发经验:对于静态资源:可以把静态资源放在特定的目录(如resources目录)中,来简化【
4.一种反向思维:<mvc:mapping path="/restful/**"/>4.一种反向思维:
三:拦截器中preHandle()方法的返回值:【return true】或【return false】;
1.preHandle()方法:return false:相当于一个“阻断器”;
2. 在实际开发中,可以利用【preHandler()方法的return值】:来决定【放行请求】还是【立即响应,中断请求】;
一:<mvc:exclude-mapping path=""/>标签:设置【不拦截的url】;
1.先看一个客观情况:只要一个资源的url符合“拦截器的path”,那么访问该资源的时候,这个请求就会被拦截器处理;
对于【interceptor工程】,启动Tomcat,访问【localhost/client.html】;
看后台,会发现:.html,.js这些资源,拦截器都拦截了;(主要是.js这些静态资源也被拦截了)
即,上面的案例主要说明:
● 我们知道所有资源都有一个uri,自然其也有url(uri是url的一部分);
● 我们访问某个资源时候,只要该资源的url符合【拦截器的path属性】,那么【访问这个资源的url时,这个请求就会被拦截】;
但是,在绝大部分情况下,对于【.js,.ico,.jpg】等静态资源,我们并不希望拦截器对其进行处理;所以,当我们访问【.js,.ico,.jpg等静态资源】时,如何不拦截这些请求,就是接下里要介绍的内容;
2.通过【<mvc:exclude-mapping path=""/>】标签:设置【不拦截的url】;(在实际开发中,一般通过这个标签,设置不去处理【.js,ico,jpg】等静态资源;)
启动Tomcat,观察效果: