SpringMVC源码解析之HandlerInterceptor接口

接口给提供了3个方法:

1 preHandle

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

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

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

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

参数

请求 - 当前的HTTP请求
响应 - 当前HTTP响应
处理器 - 处理器选择来执行,类型和/或实例的评价
返回:
true如果执行链应与下一个拦截器或处理程序本身进行。 否则,DispatcherServlet认为,这种拦截器已经处理了响应本身。

抛出

Exception -在错误的情况下

2 postHandle

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

拦截处理程序的执行。 调用后的HandlerAdapter实际上调用的处理,但DispatcherServlet的呈现视图之前。 可以公开额外的模型对象通过给定的ModelAndView中的视图。
DispatcherServlet的在执行链流程处理程序,其中包括任何数量的拦截器的,与所述处理程序本身在末端。 利用这种方法,每个拦截器可以后处理的执行,在执行链的相反的顺序得到应用。
注:特殊注意事项适用于异步请求处理。 欲了解更多详情,请参见AsyncHandlerInterceptor 。

参数

请求 - 当前的HTTP请求
响应 - 当前HTTP响应
处理器-处理器(或HandlerMethod即开始异步执行,类型和/或实例检查)
ModelAndView的-在ModelAndView返回的句柄(也可以是null )

抛出

Exception -在错误的情况下

3 afterCompletion

在DispatchServlet执行完ModelAndView之后执行

请求处理,即完成之后回调,呈现视图后。 将在处理程序执行的任何结果调用,从而允许适当的资源清理。
注意:如果此拦截器的才会被调用preHandle方法已成功完成,返回true !
如同postHandle方法,该方法将在以相反的顺序链中的每个拦截器被调用,所以第一个拦截器将是最后被调用。
注:特殊注意事项适用于异步请求处理。 欲了解更多详情,请参见AsyncHandlerInterceptor 。

参数

请求 - 当前的HTTP请求
响应 - 当前HTTP响应
处理器-处理器(或HandlerMethod即开始异步执行,类型和/或实例检查)
前 - 抛出异常的处理程序执行的,如果有的话

抛出

Exception -在错误的情况下

猜你喜欢

转载自blog.csdn.net/qq_33589510/article/details/106546517