`
wenxin2009
  • 浏览: 320548 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java拦截器

    博客分类:
  • java
 
阅读更多

Java拦截器示例(实现InvocationHandler):

package com.dwen.test;

public interface IBusiness {
    public void doSomething();
}

 

package com.dwen.test;

public class BusinessImpl implements IBusiness {

    public void doSomething() {
        System.out.println("业务层调用doSomething()方法");
    }

}

 

package com.dwen.test;

public class InterceptorClass {

    public void before(){
        System.out.println("拦截器调用before()方法。");
    }
    
    public void after(){
        System.out.println("拦截器调用after()方法。");
    }
}

 

package com.dwen.test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

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);
    }
    
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object resultObject = null;
        interceptor.before();
        resultObject = method.invoke(business, args);
        interceptor.after();
        return resultObject;
    }

}

 

package com.dwen.test;

public class Client {

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        DynamicProxyHandler handler = new DynamicProxyHandler();
        IBusiness business = new BusinessImpl();
        IBusiness businesProxy = (IBusiness) handler.bind(business);
        businesProxy.doSomething();
    }

}

 

执行结果:

拦截器调用before()方法。
业务层调用doSomething()方法
拦截器调用after()方法。

分享到:
评论

相关推荐

    java 拦截器实现

    Java拦截器是面向切面编程(AOP)的重要组成部分,它允许我们在方法调用前后插入自定义的行为。在Java中,有两种主要的方式来实现拦截器:一种是基于接口的JDK动态代理,另一种是基于类的CGLIB动态代理。这里我们将...

    java拦截器小实验(银行账户)

    在这个“java拦截器小实验(银行账户)”中,我们将探讨如何使用Java的动态代理机制来实现一个简单的银行账户操作拦截器。 首先,让我们理解什么是代理(Proxy)。代理模式是结构型设计模式,它提供了一种对目标...

    java 拦截器例子

    Java拦截器(Interceptor)是Java应用开发中一种重要的设计模式,尤其在企业级应用和框架中,如Spring、Struts2、MyBatis等。它主要用于在方法执行前后添加额外的功能,比如日志记录、性能统计、事务管理、权限验证...

    java拦截器_类型转换_国际化

    1. **Java拦截器**: - AOP(面向切面编程)基础:Spring框架中的拦截器是基于AOP的概念,它允许开发者定义“切面”来封装横切关注点,如事务管理。 - 拦截器链:多个拦截器可以形成一个链,每个拦截器在目标方法...

    (源码)基于Java拦截器框架的事件处理系统.zip

    # 基于Java拦截器框架的事件处理系统 ## 项目简介 本项目是一个基于Java拦截器框架的事件处理系统,旨在通过拦截器模式实现对应用程序请求和响应的预处理和后处理。拦截器可以在请求处理程序执行之前或之后执行...

    Java拦截器.pdf

    Java拦截器是面向切面编程(AOP)的一种实现方式,主要用于在方法执行前后插入额外的操作,例如日志记录、权限验证、性能监控等。在Web应用框架如Struts 2中,拦截器扮演着重要角色,它们可以动态地拦截Action调用,...

    Java拦截器

    很好很强大 Java拦截器

    java代理实现webservice接口拦截器功能

    本文根据java代理实现CXF拦截器异常时只能进入fault拦截器而不能继续向下执行的问题。 利用java代理让RMI具有拦截器的功能。

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...

    应用市场中Java拦截器和切面的使用实例详解

    Java拦截器和面向切面编程(AOP)是两种在应用程序中实现横切关注点的常见方式,尤其在处理如日志记录、权限验证、事务管理等通用任务时。在应用市场环境中,这两种技术同样发挥着重要作用。接下来,我们将深入探讨...

    拦截器解决中文乱码问题

    "拦截器解决中文乱码问题"这个主题,主要关注的是如何通过使用拦截器(Interceptor)这一技术手段来预防或解决乱码现象。拦截器是Spring MVC框架中的一个重要组件,它可以对HTTP请求进行预处理和后处理,从而在数据...

    自定义拦截器的实现以及拦截器的详细配置

    在Java Web开发中,拦截器(Interceptor)是一个重要的概念,特别是在使用MVC框架如Struts2时。拦截器可以理解为一种预处理和后处理机制,它在请求到达控制器之前和离开控制器之后进行操作,例如日志记录、权限检查...

    struts 拦截器,扩展,以及java annotation

    - 拦截器是Struts2的核心组件之一,它们是基于Java的动态代理机制实现的。在Action调用前后,拦截器可以执行一系列预定义的任务,如日志记录、权限验证、数据校验等。 - 拦截器链是由多个拦截器按照特定顺序组成的...

    SpringMvc 拦截器

    在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现通用的功能,如权限验证、日志记录、性能统计等,避免在每个控制器方法中重复编写...

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    然而,在使用拦截器时,可能会遇到拦截器误拦截静态资源文件(如js、css、图片等)的问题。这不仅会影响网页的加载速度,还可能导致页面呈现异常。 在本文中,我们讨论了三种解决SpringMVC拦截器拦截静态资源文件的...

Global site tag (gtag.js) - Google Analytics