返回顶部
首页 > 资讯 > 后端开发 > Python >Java 实现拦截器Interceptor的拦截功能方式
  • 529
分享到

Java 实现拦截器Interceptor的拦截功能方式

2024-04-02 19:04:59 529人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录第1步:创建业务组件接口 BusinessFacade第2步:创建业务组件实现类 BusinessClass第3步:创建拦截器 InterceptorClass第4步:创建动态代

Java 里的拦截器是动态拦截 action 调用的对象,它提供了一种机制可以使开发者可以定义在一个 action 执行的前后执行的代码,也可以在一个 action 执行前阻止其执行,同时也提供了一种可以提取 action 中可重用部分的方式。在 aop(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前进行拦截,然后在之前或之后加入某些操作。

此外,拦截器在流行的开源框架中也很常见,其依赖的技术就是 Java 的动态代理。理解拦截器的核心原理对理解这些开源框架的体系结构至关重要。下面,我们就以一个简单的模型的来说明拦截器实现的一般方法。

模型主要分为五个模块,分别:

  • 业务组件,被代理和被拦截的对象;
  • 代理处理器,实现了InvocationHandler接口的一个对象;
  • 代理对象,Proxy对象;
  • 拦截器,普通的 Java Bean,在调用业务方法之前或者之后会自动拦截并执行自己的一些方法;
  • 客户端,执行业务处理的入口。

接下来,我们就用 Java 语言来实现拦截器Interceptor的拦截功能:

第1步:创建业务组件接口 BusinessFacade



public interface BusinessFacade {
    public void doSomething();
}

第2步:创建业务组件实现类 BusinessClass



public class BusinessClass implements BusinessFacade {
    public void doSomething() {
        System.out.println("在业务组件 BusinessClass 中调用方法: doSomething()");
    }
}

第3步:创建拦截器 InterceptorClass



public class InterceptorClass {
    // 在 action 之前调用
    public void before(){
        System.out.println("在拦截器 InterceptorClass 中调用方法: before()");
    }
    // 在 action 之后调用
    public void after(){
        System.out.println("在拦截器 InterceptorClass 中调用方法: after()");
    }
}

第4步:创建动态代理处理器工具 DynamicProxyHandler



public class DynamicProxyHandler implements InvocationHandler {
    // 声明被代理对象
    private Object business;
    // 创建拦截器
    private InterceptorClass interceptor = new InterceptorClass();
    
    public Object bind(Object business) {
        this.business = business;
        
        return Proxy.newProxyInstance(business.getClass().getClassLoader(),
                business.getClass().getInterfaces(),
                this);
    }
    
   public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
       Object result = null;
       interceptor.before();
       result = method.invoke(business, args);
       interceptor.after();
       return null;
   }
}

第5步:创建客户端 ClientDemo



public class ClientDemo {
    public static void main(String args[]) {
        // 创建动态代理处理工具
        DynamicProxyHandler handler = new DynamicProxyHandler();
        // 创建业务组件对象
        BusinessFacade business = new BusinessClass();
        // 创建业务组件对象,并用动态代理绑定代理类
        BusinessFacade businessProxy = (BusinessFacade) handler.bind(business);
        // 调用业务组件中的方法,演示拦截器效果
        businessProxy.doSomething();
    }
}

运行上面的项目代码,结果如下图所示:

1

如上图所示,显然我们拦截器的拦截功能实现啦!

通过这篇文章,我们可能会对拦截器的实现原理有一个更透彻的理解。

But,在真正的项目实践之中,要想实现拦截器的功能,我们一般采用继承类HandlerInterceptorAdapter或者抽象类AbstractInterceptor,或者实现HandleInterceptor接口。

也就是说,我们只需要关心如何重写方法,而不需要关心其内部的实现原理。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Java 实现拦截器Interceptor的拦截功能方式

本文链接: https://lsjlt.com/news/155956.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java 实现拦截器Interceptor的拦截功能方式
    目录第1步:创建业务组件接口 BusinessFacade第2步:创建业务组件实现类 BusinessClass第3步:创建拦截器 InterceptorClass第4步:创建动态代...
    99+
    2024-04-02
  • Java实现拦截器Interceptor的拦截功能方式是怎么样的
    本篇文章为大家展示了Java实现拦截器Interceptor的拦截功能方式是怎么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java 里的拦截器是动态拦截 action 调用的对象,它提供了一...
    99+
    2023-06-25
  • SpringMVC的拦截器(Interceptor)
    文章目录 1 拦截器概念2 拦截器入门案例2.1 环境准备2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:...
    99+
    2023-09-10
    tomcat java servlet
  • Java拦截器Interceptor实现原理是什么
    这篇文章主要介绍“Java拦截器Interceptor实现原理是什么”,在日常操作中,相信很多人在Java拦截器Interceptor实现原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java拦截器...
    99+
    2023-06-22
  • SpringBoot使用Interceptor拦截器的实例
    在springboot中使用拦截器也比较简单,实现HandlerInterceptor或者AsyncHandlerInterceptor接口,再从配置里添加一下拦截器就完成了; As...
    99+
    2023-03-19
    SpringBoot使用Interceptor拦截器 SpringBoot拦截器
  • SpringBoot拦截器实现登录拦截
    SpringBoot拦截器可以做什么可以对URL路径进行拦截,可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等。SpringBoot拦截器实现登录拦截pom.xml: 4.0.0 org.s...
    99+
    2015-07-20
    java教程 Spring Boot java
  • Java拦截器Interceptor实现原理及代码示例
      1,拦截器的概念 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执...
    99+
    2024-04-02
  • Android 实现电话拦截及拦截提示音功能的开发
      本文所讲的内容是在Android系统中如何写程序进行电话拦截,并发出拦截提示音提醒用户,可以说此功能还是比较实用的。    &nbs...
    99+
    2022-06-06
    电话 Android
  • 如何在Springboot实现拦截器功能
    preHandle: 预先处理,在目标的controller方法执行之前,进行处理 postHandle: 在目标的controller方法执行之后,到达指定页...
    99+
    2024-04-02
  • 怎么在Springboot实现拦截器功能
    本篇内容介绍了“怎么在Springboot实现拦截器功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!preHandle: 预先处...
    99+
    2023-07-02
  • MyBatis拦截器实现分页功能实例
    由于业务关系 巴拉巴拉巴拉好吧 简单来说就是原来的业务是 需要再实现类里写 selectCount 和selectPage两个方法才能实现分页功能现在想要达到效果是 只通过一个方法就可以实现 也就是功能合并 所以就有了下面的实践既然是基于M...
    99+
    2023-05-31
    mybatis 拦截器 分页
  • Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用
    目录1.过滤器 (Filter)2.拦截器 (Interceptor)3.区别3.11、实现原理不同3.2 使用范围不同3.3 触发时机不同3.4 拦截的请求范围不同3.5 注入Be...
    99+
    2024-04-02
  • SpringBoot拦截器实现登录拦截的示例代码
    可以对URL路径进行拦截,可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等  实现代码 新建 interceptor包 添加拦截器代码 package c...
    99+
    2024-04-02
  • 如何使用SpringBoot拦截器实现登录拦截
    小编给大家分享一下如何使用SpringBoot拦截器实现登录拦截,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!可以对URL路径进行拦截,可以用于权限验证、解决乱码...
    99+
    2023-06-29
  • 详解SpringMVC的拦截器链实现及拦截器链配置
    目录1、拦截器链实现2、拦截器链的执行顺序1、拦截器链实现 只需定义多个拦截器的 bean,然后在拦截器的配置类中将其逐一添加即可 第一个拦截器的定义: @Component pub...
    99+
    2024-04-02
  • SpringMVC中拦截器的实现
    SpringMVC 中的 Interceptor 拦截器是非常重要和相当有用的,它的主要作用是拦截指定的用户请求,并进行相应的预处理与后处理。其拦截的时间点在“处理器映射...
    99+
    2024-04-02
  • AngularJS怎么使用拦截器实现loading功能
    小编给大家分享一下AngularJS怎么使用拦截器实现loading功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体如下:<!DOCTYPE html> <...
    99+
    2024-04-02
  • mybatisplus 的SQL拦截器实现关联查询功能
    由于项目中经常会使用到一些简单地关联查询,但是mybatisplus还不支持关联查询,不过在看官方文档的时候发现了mybatisplus的SQL拦截器(其实也是mybatis的)就想...
    99+
    2024-04-02
  • 浅谈Springboot实现拦截器的两种方式
    目录一、拦截器方式1、配置HandlerInterceptor2、注册拦截器3、使用拦截器的坑二、过滤器方式1、实现Filter接口2、使用过滤器需要注意的实现过滤请求有两种方式: ...
    99+
    2024-04-02
  • Java SpringMVC实现自定义拦截器
    目录SpringMVC实现自定义拦截器1 拦截器(interceptor)的作用2 拦截器和过滤器区别3.实现过程3.1创建拦截器类实现HandlerInterceptor接口3.2...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作