springmvc二十九:拦截器

  • Post author:
  • Post category:其他


Springmvc提供了拦截器机制; 允许运行目标方法之前进行一些拦截工作,或者目标方法运行之后进行一些其他处理。

Filter(过滤器)是javaweb定义的。

拦截器是springmvc定义的。

preHandle: 在目标方法运行之前调用; 返回boolean;

postHandle: 在目标方法运行之后调用

afterCompletion:在请求整个完成之后; 来到目标页面之后;资源相应之后;

1). 拦截器是一个接口

2). 实现HandlerInterceptor接口

3). 配置拦截器

<!-- 配置拦截器 -->
<mvc:interceptors>
	<!--  默认拦截所有请求 -->
	<bean class="com.atchina.MyFirstInterceptor"></bean> 
</mvc:interceptors>

4). 拦截器的运行流程

正常运行流程

拦截器的preHandle——目标方法——拦截器的postHandle——页面———拦截器的afterCompletion

其他流程

1. 只要preHandle不放行就没有以后的流程。

2.

只要放行了, afterCompletion都会执行。

多个拦截器

正常流程

.MyFirstInterceptor..preHandle…

.MySecondInterceptor..preHandle…

….test01..目标方法…

.MySecondInterceptor..postHandle…

.MyFirstInterceptor..postHandle…

….success…jsp…

.MySecondInterceptor..afterCompletion…

.MyFirstInterceptor..afterCompletion…

拦截器的preHandle: 是按照

顺序

执行。

拦截器的postHandle: 是按照

逆序

执行。

拦截器的afterCompletion: 是按照

逆序

执行。

异常流程:

1.不放行

1). 哪一块不放行,从此以后的流程不会执行

MySecondInterceptor不放行

,但是他前面已经放行了的拦截器的afterCompletion还是会执行

.MyFirstInterceptor..preHandle…

.MySecondInterceptor..preHandle…

.MyFirstInterceptor..afterCompletion…

拦截器与过滤器

什么时候用拦截器? 什么时候用过滤器?

如果某些功能,需要其他组件配合完成,我们就使用拦截器;其他情况可以使用过滤器filter。



版权声明:本文为m0_37564426原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。