`

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_6.rar (5.9 KB)
  • 描述: Struts2拦截器原理分析实例
  • 下载次数: 31
分享到:
评论

相关推荐

    struts2 拦截器

    下面将详细探讨Struts2拦截器及其工作原理。 ### 一、Struts2 拦截器概念 1. **拦截器是什么**:拦截器是一种动态拦截Action调用的对象,它可以理解为一个过滤器,它在Action被调用之前和之后执行特定的逻辑。...

    详解Struts2拦截器

    通过对Struts2拦截器的深入分析,我们可以看出拦截器不仅是Struts2框架的核心组成部分,也是实现代码重用、提高代码质量的有效手段。理解并合理运用拦截器,对于提升项目的开发效率和代码质量具有重要意义。

    Struts2拦截器源程序

    分析这个文件或目录可以帮助我们更深入地理解Struts2拦截器的内部工作机制,包括它如何与ActionInvocation交互,以及如何处理请求和响应。 总结来说,Struts2拦截器是框架的核心部分,它们提供了一种灵活的方式,以...

    Struts2之拦截器原理分析及使用-上案例struts007

    本篇文章将深入剖析Struts2拦截器的工作原理,并通过案例"struts007"来展示如何实际应用。 首先,我们了解下拦截器的基本概念。拦截器是一个实现了Struts2提供的`Interceptor`接口的类,它定义了两个方法:`...

    Struts2拦截器源码

    下面将详细探讨Struts2拦截器的源码及其工作原理。 首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的一个概念,在Struts2中,拦截器是基于Java的动态代理机制实现的。它们是一系列实现了`Interceptor`接口的...

    Struts2之拦截器原理分析及使用案例struts008

    在本篇文章中,我们将深入探讨Struts2的拦截器原理以及如何在实际项目中应用拦截器。 拦截器在Struts2中的作用就像电影中的导演,它在动作执行前后插入额外的逻辑,比如日志记录、权限检查、数据验证等。这些操作不...

    Struts2 拦截器的执行顺序(二十九)

    这篇博客“Struts2 拦截器的执行顺序(二十九)”可能探讨了Struts2拦截器链的工作原理和它们的执行顺序,这对于理解Struts2的内部机制至关重要。 首先,让我们深入理解Struts2的拦截器。拦截器是在Action调用前后...

    JavaWeb中Struts2拦截器深入分析(一)

    Struts2 拦截器是JavaWeb开发中Struts2框架的核心组件之一,它基于AOP(面向切面编程)理念,允许...通过理解拦截器的工作原理和如何自定义拦截器,开发者可以更好地利用Struts2框架来构建高效、稳定的JavaWeb应用。

    Struts2的拦截器的小例子程序

    ### Struts2拦截器原理与实战案例解析 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的重要工具之一,其核心优势在于强大的MVC架构支持和丰富的扩展性。其中,拦截器(Interceptor)是Struts2框架的...

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

    实践是学习的最佳途径,通过分析和运行代码,你将更深入地了解Struts2拦截器的内部工作原理。 总的来说,Struts2拦截器是实现业务逻辑复用和控制流管理的强大工具。它们提高了代码的可维护性和可扩展性,使得开发者...

    struts拦截器的例子

    Struts拦截器是Java Web开发中的重要概念,尤其在基于Struts 2框架的应用中扮演着核心角色。这个"struts拦截器的例子"提供了一个学习和理解拦截器工作原理的起点,非常适合对这一主题感兴趣的初学者。 Struts 2框架...

    12 struts2拦截器

    Struts2提供了一系列内置的拦截器,如`params`拦截器用于处理请求参数,`exception`拦截器处理异常,`i18n`拦截器实现国际化,`chain`拦截器使请求继续执行下一个Action,`timer`记录Action的执行时间等。这些拦截...

    Struts2的拦截器的使用详解

    本文将深入探讨Struts2的拦截器使用,结合实例和源码分析,帮助你更好地理解和运用这一特性。 一、拦截器的概念与作用 拦截器是Struts2框架的核心组件之一,它是在动作执行前后插入的一段代码,能够对请求进行...

    struts2拦截器举例

    下面我们将深入探讨Struts2拦截器的工作原理和应用场景。 1. 拦截器的定义: 拦截器是基于AOP(面向切面编程)思想的一种设计模式,它在Action执行前后进行拦截,对请求和响应进行额外处理。在Struts2中,拦截器是...

    浪曦struts2拦截器源码

    浪曦Struts2拦截器源码分析是深入理解Struts2工作原理的关键部分。拦截器在Struts2中扮演着重要的角色,它们是AOP(面向切面编程)的一种实现,用于在动作执行前后插入额外的功能,如日志记录、权限检查等。 首先,...

    Struts2拦截器

    Struts2 拦截器是该框架中的核心组件之一,它允许开发者在Action执行前后插入自定义逻辑,实现如日志记录、权限验证、性能监控等功能。拦截器的机制基于AOP(面向切面编程)思想,通过拦截器链的方式,使得在执行...

    Struts2的拦截器——Struts2拦截器的基础知识.pptx

    2. **拦截器的工作原理**: - 当FilterDispatcher接收到用户的HTTP请求时,会根据配置的拦截器链对请求进行处理。每个拦截器都有`preintercept`和`postintercept`方法,分别在Action方法执行前和执行后被调用。 - ...

    Struts2 拦截器

    这篇博客文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际项目中应用。 **1. 拦截器概念** 在Struts2框架中,拦截器是一个实现了`Interceptor`接口的Java类,它可以对请求进行预处理或后处理。拦截器链...

    struts2类型转换 拦截器 校验的例子

    通过分析这些文件,你可以更深入地了解Struts2如何处理请求,执行类型转换,应用拦截器以及进行数据校验。 总结来说,Struts2的类型转换、拦截器和校验机制是构建健壮、可维护的Java web应用程序的重要工具。理解并...

Global site tag (gtag.js) - Google Analytics