springmvc之拦截器

1.springmvc之Interceptor

springmvc拦截器(Interceptor)针对处理器映射HandlerMapping拦截设置,指定配置的处理器映射器,经过该指定的处理器映射器HandlerMapping映射成功的处理器Handler,使用配置的拦截器。

2.Interceptor与Filter执行关联

1)Filter:Filter是Servlet规范中的过滤器,依赖于servlet容器,若客户端发起请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的Web资源处理。

2)Interceptor:Interceptor拦截器用于拦截指定处理器映射器HandlerMapping下所有处理器,表现形式有点像面向侧面的程序设计(aspect-oriented programming,AOP),但是AOP是针对单一的方法。

客户端发起请求,先经过过滤链处理后,请求在进入springmvc框架中的DispatchServlet中Interceptor针对拦截指定HandlerMaping映射下的所有Handler进行拦截。

3.实现一个Interceptor

1)实现HandlerInterceptor接口

HandlerInterceptor接口的三个方法

该方法在进入Handler方法之前执行,可用于实现身份认证,权限认证

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception;

该方法体在Handler方法执行过程中返回ModelAndView执行执行。可以统一管理Model的数据和View视图,存储数据,统一指定视图。

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception;

该方法在Handler执行完后执行此反法,可以用以统一异常处理,统一日志处理

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
 throws Exception;

2)为指定HandlerMapping配置实现的Interceptor

4.多拦截器(Interceptors)的执行顺序

<!-- 拦截器 -->
    <mvc:interceptors>
    	<!-- 按配置顺序执行拦截器preHandler方法,拦截器其他内部方法执行顺序按拦截器配置顺序倒叙执行 -->
    	<mvc:interceptor>
    		<!-- /** 拦截根路径下所有请求 -->
    		<mvc:mapping path="/**"/>
    		<bean id="myHandlerInterceptor1" class="com.lin.ssm.interceptor.MyHandlerInterceptor1" />
    	</mvc:interceptor>
    	<mvc:interceptor>
    		<!-- /** 拦截根路径下所有请求 -->
    		<mvc:mapping path="/**"/>
    		<bean id="myHandlerInterceptor2" class="com.lin.ssm.interceptor.MyHandlerInterceptor2" />
    	</mvc:interceptor>
    </mvc:interceptors>

按顺序配置MyInterceptor1和MyHandlerInterceptor2,每个的拦截器内部方法带上输出语句,

顺序执行Interceptor结果如下

running the MyHandlerInterceptor1's preHandler
running the MyHandlerInterceptor2's preHandler
running the MyHandlerInterceptor2's postHandle
running the MyHandlerInterceptor1's postHandle
running the MyHandlerInterceptor2's afterCompletion
running the MyHandlerInterceptor1's afterCompletion

 结论:多拦截器(Interceptors)的执行顺序,按配置顺序执行拦截器preHandler方法,拦截器其他内部方法执行顺序按拦截器配置顺序倒叙执行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值