まず、どのようなインターセプタですか?
リクエストがDispatchServletを来たとき、HandlerMappingプロセッサに応じHandlerExecutionChainオブジェクトを返すためのメカニズムがあります。このオブジェクトは、プロセッサとインターセプタが含まれています。ブロッカーは、プロセッサの機能を強化するために使用しました。
- プロセッサのマッピング--- [リターン] HandlerExecutionChainプロセッサハンドラ
- プロセッサHandlerExecutionChain = +インターセプタ
第二、インターセプタインターフェース
public interface Handlerlnterceptor {
//处理器执行前方法 boolean preHandle(request,response,handler)
//处理器处理后方法 void postHandle(request,response,handler,ModelAndView)
//处理器完成后方法 void afterCornpletion(request,response,handler,Exception)
}
+---------------+
| preHandle |
+-------+-------+
|
+-------+-------+ +--------------+
| 处理器 +-----------> | postHandle | +------------+
+---------------+ +--------------+ |
|
+----------------+ +--------------+ |
|afterCornpletion+<------------+ 视图处理 | <-----------+
+----------------+ +--------------+
第三に、登録インターセプター
在配置文件中实现WebMvcConfigurer接口,最后覆盖其addlntereptors方法进行注册拦截器
// 注册拦截器到Spring MVC机制,然后它会返回一个拦截器注册
InterceptorRegistration ir = registry.addInterceptor(new Interceptor1());
// 指定拦截匹配模式,限制拦截器拦截请求
ir.addPathPatterns("/interceptor/*");
第四に、インターセプタ順序
責任のシーケンシャルチェーン方法。登録順になります。