- 浏览: 124624 次
- 性别:
- 来自: 深圳
文章分类
最新评论
什么是拦截器:
拦截器,在AOP(Aspect-Oriented Programming)中用于在执行目标对象某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
下面模拟拦截器的实现,一共需要5个类:
1,目标对象接口 TargetInterface.java
2,目标对象接口实现类 Target.java
3,拦截器类 Interceptor.java
4,处理器类 MyHandler.java
5,代理类 MyProxy.java
1,TargetInterface接口中声明一个doSomething方法
2,Target 类实现TargetInterface接口,并实现doSomething方法
3,Interceptor.java拦截器中定义两个方法,分别执行在目标对象方法前,后执行。
4,在处理器类MyHandler类中将目标对象与拦截器类关联起来,使用反射调用目标对象,并在执行目标对象方法前后执行拦截器中的方法。
5,在代理类MyProxy中声明处理器类,通过动态代理调用处理器类。
最后写一个测试类来进行测试:
结果将打印出
before
do something
after
拦截器,在AOP(Aspect-Oriented Programming)中用于在执行目标对象某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
下面模拟拦截器的实现,一共需要5个类:
1,目标对象接口 TargetInterface.java
2,目标对象接口实现类 Target.java
3,拦截器类 Interceptor.java
4,处理器类 MyHandler.java
5,代理类 MyProxy.java
1,TargetInterface接口中声明一个doSomething方法
public interface TargetInterface { public void doSomething(); }
2,Target 类实现TargetInterface接口,并实现doSomething方法
public class Target implements TargetInterface { public void doSomething() { System.out.println("do something"); } }
3,Interceptor.java拦截器中定义两个方法,分别执行在目标对象方法前,后执行。
public class Interceptor { public void before(){ System.out.println("before..."); } public void after(){ System.out.println("after..."); } }
4,在处理器类MyHandler类中将目标对象与拦截器类关联起来,使用反射调用目标对象,并在执行目标对象方法前后执行拦截器中的方法。
public class MyHandler implements InvocationHandler { private Object object; private Interceptor interceptor = new Interceptor(); public void setObject(Object object) { this.object = object; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; interceptor.before(); result = method.invoke(object, args); interceptor.after(); return result; } }
5,在代理类MyProxy中声明处理器类,通过动态代理调用处理器类。
public class MyProxy { public Object getProxy(Object object){ MyHandler myhandler = new MyHandler(); myhandler.setObject(object); return Proxy.newProxyInstance(Target.class.getClassLoader(), object.getClass().getInterfaces(), myhandler); } }
最后写一个测试类来进行测试:
public class Client { public static void main(String[] args) { TargetInterface target = new Target(); MyProxy myProxy = new MyProxy(); TargetInterface proxy = (TargetInterface)myProxy.getProxy(target); proxy.doSomething(); } }
结果将打印出
before
do something
after
发表评论
-
Struts2(18):Struts2深入探索续2
2011-06-06 03:15 627Struts2与Servlet是低耦合的,这可使项目不依赖于具 ... -
Struts2(17):Struts2深入探索续
2011-06-06 00:26 11631,struts2有属性驱动方式与模型驱动两种方式:之前的例子 ... -
Struts2(16): Struts2深入探索
2011-06-05 12:56 962先来看看struts2包中的一些配置文件: 1,strut ... -
Struts2(15):Struts2的国际化续
2011-06-04 23:38 946Struts2中action错误的国际化 在action类的 ... -
Struts2(14):Struts2的国际化
2011-06-04 02:44 918先看看JAVA的国际化实现:JAVA国际化是使用java.ut ... -
Struts2(13):Struts2的上传下载续2
2011-06-04 00:07 963本节主要介绍上传任意数据的文件、指定文件类型上传与Struts ... -
Struts2(12):Struts2的上传下载续
2011-05-29 12:40 952使用Struts2结束common的fileupload和io ... -
Struts2(11):Struts2的上传下载
2011-05-29 01:00 893首先来看看在JSP中上传是如何做的: 从upload.jsp ... -
Struts2(10):Struts2的监听器与验权小例
2011-05-28 18:27 3084Struts2的监听器: 在xwork-2.0.7.jar包 ... -
Struts2(7):Struts2的输入校验框架(xml配置文件校验)
2011-05-22 22:00 3004上一节使用了Action类中的validate方法进行校验,此 ... -
Struts2(6):Struts2的输入校验2
2011-05-22 18:13 1119遇到类型转换错误的时候(也就是说不能进行类型转换),strut ... -
Struts2(5):Struts2的输入校验
2011-05-22 16:23 11591,Register.jsp,一个注册页面,包括用户名,密码, ... -
Struts2(4):Struts2类型转换2
2011-05-22 12:35 11021,修改上一节的input.jsp文件 <s:form ... -
Strtus2(3):struts2的类型转换
2011-05-21 23:34 10431,新建一个Point类,包含两个变量x,y。只有set,ge ... -
Struts2(2):Struts2的输入检验
2011-05-21 12:44 9821:新建一个login2.jsp,使用Struts2的标签编写 ... -
Struts2(1):入门与配置
2011-05-21 11:51 5911,在MyEclipse中新建一个WEB工程:struts2d ... -
Struts2(9):开发自己的Struts2拦截器(编码与配置)
2011-05-15 21:16 1557要开发自己的Struts2拦截器类,需要实现Inte ...
相关推荐
以下是对Struts2拦截器原理与实现的详细解析: 1. **拦截器的概念** Struts2拦截器是一种AOP(面向切面编程)的实现,它可以在不修改Action代码的情况下,通过定义拦截器并在配置文件中设置拦截器链,来动态地添加...
首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的顺序在Action执行之前和之后执行。通过实现`Interceptor`接口或继承`AbstractInterceptor`类,我们可以创建...
这个"struts2拦截器应用小例子"可能包含了一个简单的拦截器实现,展示了如何在实际项目中集成和使用。通过这个例子,你可以学习到如何创建、注册拦截器,以及如何在Struts2框架中构建拦截器栈,从而更灵活地管理应用...
Struts2是一个强大的MVC框架,它通过使用拦截器(Interceptor)来实现业务逻辑与表现层的解耦,提供了一种灵活的扩展机制。在Struts2中,拦截器是AOP(面向切面编程)的一种实现,它可以监控、修改或增强方法调用的...
本文将深入探讨如何利用Struts2的拦截器实现简单的登录功能。拦截器是Struts2框架的核心组件之一,它允许我们在动作执行前后插入自定义逻辑,比如权限验证、日志记录等。 首先,我们来理解一下Struts2拦截器的工作...
在Struts2中,拦截器(Interceptor)是实现业务逻辑控制和增强功能的重要机制,而国际化(Internationalization,简称i18n)则能帮助我们构建支持多语言的Web应用。下面将详细解释这两个知识点以及它们如何在Struts2...
本文将深入探讨Struts2拦截器的原理,并通过一个简单的实例来帮助你理解其工作方式。 首先,让我们理解什么是拦截器。在软件设计模式中,拦截器是一种“链式处理”模式,它允许在动作执行前后插入自定义逻辑。在...
在Struts2中,创建一个拦截器非常简单,只需要实现`Interceptor`接口或者继承`AbstractInterceptor`抽象类。通常,我们会选择继承`AbstractInterceptor`,因为它提供了一些基本的方法和属性。然后在`intercept()`...
Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的 拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器 三、定义Struts2拦截器。 ...
### Struts2拦截器原理与实战案例解析 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的重要工具之一,其核心优势在于强大的MVC架构支持和丰富的扩展性。其中,拦截器(Interceptor)是Struts2框架的...
在Struts2中,ActionInvocation接口代表了Action的执行过程,它可以被视为一个简单的调用栈,每个拦截器都是栈上的一个元素。当调用`invoke()`方法时,会按顺序执行这些拦截器,直到到达Action。这个设计模式与Java...
在Struts2中,拦截器(Interceptor)是实现业务逻辑控制和增强功能的重要组件,它们按照预定义的顺序执行,可以理解为一系列在动作执行前后插入的“中间件”。 拦截器的工作原理是在Action调用之前和之后执行,通过...
Struts拦截器是Java Web开发中的重要概念,尤其在基于Struts 2框架的应用中扮演着核心角色。这个"struts拦截器的例子"提供了一个学习和理解拦截器工作原理的起点,非常适合对这一主题感兴趣的初学者。 Struts 2框架...
### Struts2技术内幕:深入解析Struts架构设计与实现原理 #### Struts2概述 Struts2是Apache Software Foundation支持的一个开源项目,它是Struts1的下一代版本,继承了Struits1的优点,并在此基础上进行了大量的...
2. **注册拦截器**:在`struts-config.xml`配置文件中,通过`<interceptors>`标签定义拦截器栈,然后通过`<action>`标签的`interceptor-ref`属性引用拦截器栈。 3. **配置拦截器栈**:在`struts-config.xml`中,...
总结来说,Struts2拦截器及其时序图展示了拦截器在Action处理过程中的工作原理和顺序。通过拦截器链,开发者可以灵活地对Action的调用进行增强和控制,实现诸如数据校验、日志记录等功能,这些功能是构建企业级Java ...
Struts2 拦截器是Struts2框架的核心组件之一,它们允许开发者在Action执行前后插入自定义逻辑,实现跨切面的功能。拦截器基于Java的动态代理机制,能够独立于Action和Struts2框架进行扩展和复用。下面我们将深入探讨...
其中,拦截器(Interceptor)是Struts2框架的核心特性之一,用于增强Action的处理能力,实现业务逻辑与控制流程的分离。在Struts2中,拦截器扮演着类似于过滤器的角色,但它们更专注于处理Action执行前后的逻辑。 ...
本文将深入探讨“简单Struts2拦截器”的概念、工作原理及其实例。 ### 1. 拦截器概述 在Struts2框架中,拦截器是一种插件机制,它可以拦截用户的HTTP请求,在Action执行前后进行额外的操作,如日志记录、权限检查...
拦截器是 Struts2 框架中实现业务逻辑控制、权限验证、日志记录等功能的重要手段,极大地提高了代码的可复用性和可维护性。 1. **拦截器的基本原理** - 在 Struts2 中,拦截器的工作方式类似于过滤器(Filter),但...