SpringMVC源码解析之HandlerInterceptor接口

接口给提供了3个方法:

1 preHandle

执行controller处理逻辑前执行,返回值为boolean ,返回值为true时接着执行postHandle和afterCompletion,如果我们返回false则中断执行

SpringMVC源码解析之HandlerInterceptor接口

拦截处理程序的执行。 HandlerMapping确定的适当处理器对象后调用,但在HandlerAdapter调用处理器之前。


DispatcherServlet是在执行链中处理的handler,其中包括了任意数量的拦截器,处理器本身在链的末尾,即最后才处理 handler。 利用该方法,每个拦截器可以决定中止执行链,特别发送一个HTTP错误或写入客户端响应。


注:特殊注意事项适用于异步请求处理。 欲了解更多详情,请参见AsyncHandlerInterceptor 。

参数

请求 - 当前的HTTP请求

响应 - 当前HTTP响应

处理器 - 处理器选择来执行,类型和/或实例的评价

返回:

true如果执行链应与下一个拦截器或处理程序本身进行。 否则,DispatcherServlet认为,这种拦截器已经处理了响应本身。

抛出

Exception -在错误的情况下

2 postHandle

在执行controller的处理后,在ModelAndView处理前执行

SpringMVC源码解析之HandlerInterceptor接口

拦截处理程序的执行。 调用后的HandlerAdapter实际上调用的处理,但DispatcherServlet的呈现视图之前。 可以公开额外的模型对象通过给定的ModelAndView中的视图。

DispatcherServlet的在执行链流程处理程序,其中包括任何数量的拦截器的,与所述处理程序本身在末端。 利用这种方法,每个拦截器可以后处理的执行,在执行链的相反的顺序得到应用。

注:特殊注意事项适用于异步请求处理。 欲了解更多详情,请参见AsyncHandlerInterceptor 。

参数

请求 - 当前的HTTP请求

响应 - 当前HTTP响应

处理器-处理器(或HandlerMethod即开始异步执行,类型和/或实例检查)

ModelAndView的-在ModelAndView返回的句柄(也可以是null )

抛出

Exception -在错误的情况下

3 afterCompletion

在DispatchServlet执行完ModelAndView之后执行

SpringMVC源码解析之HandlerInterceptor接口

请求处理,即完成之后回调,呈现视图后。 将在处理程序执行的任何结果调用,从而允许适当的资源清理。

注意:如果此拦截器的才会被调用preHandle方法已成功完成,返回true !

如同postHandle方法,该方法将在以相反的顺序链中的每个拦截器被调用,所以第一个拦截器将是最后被调用。

注:特殊注意事项适用于异步请求处理。 欲了解更多详情,请参见AsyncHandlerInterceptor 。

参数

请求 - 当前的HTTP请求

响应 - 当前HTTP响应

处理器-处理器(或HandlerMethod即开始异步执行,类型和/或实例检查)

前 - 抛出异常的处理程序执行的,如果有的话

抛出

Exception -在错误的情况下

上一篇:InnoDB 存储引擎的特点及优化方法


下一篇:北京市医疗保障局:2021年元旦启用医保电子凭证!