`

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之拦截器原理分析及使用-上案例struts007

    参考博文:http://blog.csdn.net/u011638419/article/details/41510483

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

    参考博文:http://blog.csdn.net/u011638419/article/details/41592837

    详解Struts2中对未登录jsp页面实现拦截功能

    主要介绍了Struts2中对未登录jsp页面进行拦截功能的实现,在演示源码的同时对步骤和原理进行了分析,具有一定参考价值,需要得朋友可以了解下。

    吴天雄--SpringMVC笔记.doc

    SpringMVC笔记内容:第一天(SpringMVC的概述、SpringMVC与Struts2优势分析、重要组件、运行原理、SpringMVC环境搭建、@RequestMapping注解详解、字符编码过滤器、传参形式(基本数据类型或String、对象类型、对象....

    Java Web程序设计教程

    6.1.2拦截器及拦截器栈的应用 111 6.1.3自定义拦截器 115 6.2类型转换器 117 6.2.1struts2内置类型转换器 117 6.2.2引用类型的转换方式 117 6.2.3特殊对象的类型转换 118 6.2.4类型转换的错误处理 121 6.3...

    struts2深入浅出(备java基础,javaweb,javaee,框架)

    Struts2框架介绍、工作原理与架构分析、6大配置文件分析使用通配符定义action、动态方法调用,ActionContext及ServletActionContext使用,模型驱动、属性驱动,默认转换器的介绍,中的表单校验,中的国际化,文件...

    J2EE应用开发详解

    124 8.5.2 拦截器的实现原理 124 8.5.3 Struts2的内置拦截器 124 8.5.4 拦截器的配置和使用 125 8.5.5 自定义拦截器 126 8.6 一个简单的Struts2应用 130 8.7 小结 140 第9章 JSF 141 9.1 JSF技术简介 141 9.1.1 JSF...

    springMVC教学视频详解(包括spring和mybatis的整合)

    此视频包含:springmvc入门教程(原理分析、环境搭建、前端控制器配置、Handler编写调试、非注解映射器和适配器、注解映射器和适配器、前端控制器源代码分析、视图解析器配置前缀和后缀);springmvc和mybatis整合;...

    JAVA WEB典型模块与项目实战大全

    17.6 商业银行网上账户管理系统具体实现——工具类、校验器及拦截器  17.7小结  第18章 hibernate分页系统(hibernate 3.0)  18.1 hibernate分页系统原理  18.2 封装javabean的commons-beanutils组件  18.3...

    计算机科学系毕业设计论文范文

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,...

    JAVA程序开发大全---上半部分

    8.2.3 Struts配置文件编辑器 124 8.3 Struts应用实例:登录系统 125 8.4 本章小结 133 第9章 Hibernate框架的开发及应用 134 9.1 Hibernate框架概述 134 9.1.1 O/R Mapping(对象/关系映射)技术 134 9.1.2 ...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题49.Struts2的拦截器是什么?你都用它干什么?.mp4 │ Java面试题50.Spring MVC的执行流程.mp4 │ Java面试题51.SpringMVC和Struts2的不同.mp4 │ Java面试题52.简单介绍一下Spring或者Spring的两大核心...

    webx3框架指南PDF教程附学习Demo

    2.2. SpringExt原理 ......................................................................................... 16 2.2.1. XML Schema中的秘密 ...............................................................

Global site tag (gtag.js) - Google Analytics