Java拦截器(Interceptor)
2020-07-25 本文已影响0人
黑曼巴yk
前言
过滤器(Filter)关注的是web请求,拦截器(Interceptor)可以理解为“拒你所想拒”。拦截器关注的是方法调用。比如拦截敏感词汇。
- interceptor基于JAVA反射原理实现
- interceptor 不依赖于servlet容器,Filter依赖servlet容器
- interceptor只对Action起作用,Filter对所有请求起作用
- interceptor可以访问Action上下文和值栈的对象,过滤器不能
- 在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时调用一次。
使用
HandlerInterceptorAdapter
public class HandlerInterceptorAdapter implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
response.sendError(403);
return false;
}
}
注册
MyInterceptorConfig
@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptorAdapter()).addPathPatterns("/**");
}
}