栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

拦截器的介绍及使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

拦截器的介绍及使用

文章目录
  • 1. 拦截器概念
  • 2. 作用
  • 3. 适用场景
    • 3.1. 用户登录校验
    • 3.2. 资源拦截,阻止访问
  • 4. 实现拦截器
    • 4.1. preHandle
    • 4.2. postHandle
    • 4.3. afterCompletion
    • 4.4. 具体实现
      • 4.4.1. 、配置拦截器
      • 4.4.2. 、自定义拦截器
  • 5. 拦截器链

1. 拦截器概念

动态拦截Actioon调用的对象,使开发者在一个Actioon执行的前后执行一段代码,也可以在Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。

2. 作用

动态拦截Action调用的对象(也就是实际项目中的controller层的接口)

3. 适用场景 3.1. 用户登录校验 3.2. 资源拦截,阻止访问 4. 实现拦截器

实现拦截器需要实现HandlerInterceptor接口,HandlerInterceptor接口中有三个方法preHandle、postHandle、afterCompletion。

4.1. preHandle

在Action执行前调用

4.2. postHandle

在Action执行后调用,生成视图前调用

4.3. afterCompletion

在DispatcherServlet完全处理完请求之后被调用,可用于清理资源

4.4. 具体实现 4.4.1. 、配置拦截器

定义一个配置类实现WebMvcConfigurer接口,重写addCorsMappings()方法和addInterceptors()方法

@Configuration //标识这是一个配置类
public class AuthConfig implements WebMvcConfigurer {

    @Autowired
    private GatewayRequestInterceptor gatewayRequestInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册gatewayRequestInterceptor拦截器(gatewayRequestInterceptor是我们自己自定义的拦截器类)
        registry.addInterceptor(gatewayRequestInterceptor);
    }
}

4.4.2. 、自定义拦截器

定义一个拦截器实现HandlerInterceptor接口,或者继承HandlerInterceptorAdapter,重写preHandle()方法

@Component
public class GatewayRequestInterceptor implements HandlerInterceptor {

    private static final Logger log = LoggerFactory.getLogger(GatewayRequestInterceptor.class);


    public GatewayRequestInterceptor() {
    }


    
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return true;
    }
}

5. 拦截器链

可以在拦截器具体实现的第一步【配置拦截器】中添加多个自定义拦截器。

@Configuration
public class AuthConfig implements WebMvcConfigurer {

    @Autowired
    private GatewayRequestInterceptor gatewayRequestInterceptor;

    @Autowired
    private GatewayLoginInterceptor gatewayLoginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //拦截器1、注册gatewayLoginInterceptor拦截器(gatewayLoginInterceptor是我们自己自定义的拦截器类)
        registry.addInterceptor(gatewayLoginInterceptor);
        //拦截器2、注册gatewayRequestInterceptor拦截器(gatewayRequestInterceptor是我们自己自定义的拦截器类)
        registry.addInterceptor(gatewayRequestInterceptor);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/694406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号