拦截器和和Filter过滤器的区别
Filter和Interceptor二者都是AOP编程思想的体现,功能基本都可以实现
拦截器功能更强大些,Filter能做的事情它都能做
Filter在只在Servlet前后起作用,而Interceptor够深入到方法前后、异常抛出前后等
filter依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器所以可以运行在多种环境。
在接口调用的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。
Filter和Interceptor的执行顺序
过滤前->拦截前->action执行->拦截后->过滤后
实战使用
登陆的业务逻辑就不再讲述了,不明白的可以看之前的过滤器有很详细的讲解
Step1:拦截器配置类
/**
* 拦截器配置类
*/
@Configuration//Spring扫描
public class CustomWebMvcConfiguer implements WebMvcConfigurer {
/**
* 添加
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册配置 拿到注册拦截器 可以new 也可以直接调用方法 配置拦截器所用的路径 可以添加多个
registry.addInterceptor(getLoginInterceptor()).addPathPatterns("/api/v1/pri/**");
//添加第二个拦截器 采用new的方式
registry.addInterceptor(new TwoIntercepter()).addPathPatterns("/api/v1/pri/**");
WebMvcConfigurer.super.addInterceptors(registry);
}
@Bean
public LoginIntercepter getLoginInterceptor(){
return new LoginIntercepter();
}
}
Step2:登陆拦截器
/**
* 自定义拦截器 HandlerInterceptor