`
sanqiandai
  • 浏览: 4514 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2拦截器实现原理(转)

JDK 
阅读更多
第一步:创建目标对象的接口

/**
* 目标对象的接口 JDK的动态代理要求目标对象必须实现一个接口
*
* @author 张明学
*
*/
public interface TargetInter {
    public void doSomething();
}
第二步: 实现接口创建目标对象

/**
* 目标对象
*
* @author 张明学
*
*/
public class Target implements TargetInter {

    public void doSomething() {
        System.out.println("目标对象的方法执行!");
    }

}

第三步:创建我们的拦截器对象

/**
* 拦截器对象
*
* @author 张明学
*
*/
public class Interceptor {
    public void before() {
        System.out.println("before方法执行!");
    }

    public void after() {
        System.out.println("after方法执行!");
    }
}

第四步:创建我们的处理器

/**
* 处理器类 JDK代理要求实现java.lang.reflect.InvocationHandler接口
*
* @author 张明学
*
*/
public class MyHandler implements InvocationHandler {
    /**
     * 目标对象
     */
    private Object target;

    public void setTarget(Object target) {
        this.target = target;
    }

    /**
     * 拦截器对象
     */
    private Interceptor interceptor = new Interceptor();

    /**
     * invoke为真正执行的方法
     */
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        Object result = null;

        interceptor.before();

        result = method.invoke(target, args);

        interceptor.after();

        return result;
    }

}
第五步:创建代理对象

/**
* 代理对象
*
* @author 张明学
*
*/
public class MyProxy {
    /**
     * 得到对象的实例
     * @param obj
     * @return
     */
    public Object getProxy(Object obj) {

        MyHandler myHandler = new MyHandler();
        myHandler.setTarget(obj);

        /**
         * 第一个参数:得到目标对象的class对象的ClassLoader
         * 第二个参数:目标对象所实现的接口数组
         * 第三个参数:真正执行的对象(处理器)
         */
        return Proxy.newProxyInstance(Target.class.getClassLoader(), obj
                .getClass().getInterfaces(), myHandler);
    }

}

测试:

public class MyTest {

    public static void main(String[] args) {
        TargetInter targer = new Target();
        MyProxy myProxy = new MyProxy();
        /**
         * 得到代理
         */
        TargetInter proxy = (TargetInter) myProxy.getProxy(targer);


        proxy.doSomething();
    }

}

分享到:
评论

相关推荐

    浅谈Struts2拦截器的原理与实现.docx

    以下是对Struts2拦截器原理与实现的详细解析: 1. **拦截器的概念** Struts2拦截器是一种AOP(面向切面编程)的实现,它可以在不修改Action代码的情况下,通过定义拦截器并在配置文件中设置拦截器链,来动态地添加...

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    Struts2拦截器原理分析

    在文章"Struts2拦截器原理分析实例"中,作者通过一个具体的应用场景,展示了如何配置和使用拦截器来实现特定的功能,比如日志记录或权限验证。通过阅读这篇博客,我们可以更直观地理解拦截器的工作方式和价值。 ...

    struts2拦截器实现权限控制

    这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的验证。 在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外...

    Struts2拦截器及其用法详细说明

    在实际项目中,我们通常会结合Spring Security等安全框架,通过拦截器实现更复杂的权限控制。 总结,Struts2拦截器是其核心机制之一,它允许开发者以模块化的方式添加额外的功能,提高代码的可复用性和可维护性。...

    struts2拦截器实现拦截不文明字迹

    首先,我们需要了解Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)思想实现的,它通过在Action调用前后插入额外的操作,形成一个拦截链。当一个请求到来时,Struts2会按照配置的顺序依次执行这些拦截器...

    struts2拦截器原理

    Struts2 拦截器是基于Java的Servlet Filter设计模式的一种实现,它提供了一种在Action执行前后插入额外逻辑的方式。...通过合理的拦截器配置和自定义拦截器实现,可以构建出高效且易于维护的企业级Web应用。

    struts2拦截器实现原理模拟 2013-8-8

    拦截器是Struts2框架中的核心组件之一,它在MVC(Model-View-Controller)架构中扮演着重要角色,实现了灵活的业务逻辑处理和请求流程控制。本文将深入探讨Struts2拦截器的工作原理及其应用。 首先,我们要理解什么...

    struts2 拦截器

    拦截器在Struts2中扮演着至关重要的角色,它们是AOP(面向切面编程)的一个实现,用于在Action执行前后插入额外的功能。下面将详细探讨Struts2拦截器及其工作原理。 ### 一、Struts2 拦截器概念 1. **拦截器是什么...

    struts2 拦截器实现登录控制

    这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...

    详解Struts2拦截器

    拦截器名" class="拦截器实现类"/> ``` 如果需要向拦截器传递参数,可以使用`<param>`标签: ```xml 拦截器名" class="拦截器实现类"> 参数名">参数值 ``` #### 七、结论 通过对Struts2拦截器的深入分析,我们...

    struts2 拦截器实例

    通过这两个实例,你将更深入地理解Struts2拦截器的工作原理和配置方式,以及它们如何在实际项目中发挥作用。记得在实践中多尝试,理解拦截器如何与其他Struts2组件协作,以提升你的Web应用开发技能。

    struts2拦截器

    在Struts2中,拦截器的工作原理如下: 1. 用户发起HTTP请求,请求到达Struts2的Front Controller(DispatcherServlet)。 2. DispatcherServlet会根据配置找到对应的Action(动作)类。 3. 在调用Action之前,...

    Struts2拦截器的实现原理(csdn)————程序.pdf

    下面我们将深入探讨Struts2拦截器的实现原理。 首先,让我们理解一下拦截器的基本概念。拦截器是基于Java的动态代理机制实现的,它可以看作是一个过滤器,它在Action调用前后执行一些额外的任务,如日志记录、权限...

    运用struts2技术的拦截器实现的页面检测和用户注册

    首先,我们需要理解Struts2拦截器的工作原理。拦截器是基于Java的动态代理机制实现的,它们在Action调用之前和之后执行,形成一个拦截器链。开发者可以通过配置struts.xml或struts.properties文件来定义拦截器链和其...

    struts2拦截器应用小例子

    这个"struts2拦截器应用小例子"可能包含了一个简单的拦截器实现,展示了如何在实际项目中集成和使用。通过这个例子,你可以学习到如何创建、注册拦截器,以及如何在Struts2框架中构建拦截器栈,从而更灵活地管理应用...

    struts2拦截器的使用方法

    #### 二、Struts2拦截器的工作原理 拦截器的工作原理是基于责任链模式。当用户发起一个请求时,这个请求会经过一系列拦截器的处理,这些拦截器构成了一个责任链。每个拦截器都有机会处理请求或继续传递请求到下一个...

    Struts2拦截器源程序

    在Struts2中,拦截器扮演着至关重要的角色,它们是实现MVC(Model-View-Controller)架构的关键组件之一。拦截器允许开发者在动作执行前后插入自定义逻辑,比如日志记录、权限检查、数据验证等,而无需修改核心业务...

    Struts2拦截器源码

    在实际开发中,我们可以通过扩展Struts2的拦截器实现自定义功能。例如,你可以创建一个新的拦截器来实现登录检查、权限控制或性能监控,然后将其添加到拦截器栈中。通过理解和研究Struts2的拦截器源码,我们可以更好...

Global site tag (gtag.js) - Google Analytics