`
wkrain
  • 浏览: 6425 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

Interceptor的实现

    博客分类:
  • java
 
阅读更多
public interface Action {
  public String execute() throws Exception;
}

public class TestAction implements Action {

    public String execute() throws Exception {
       System.out.println("action exe");
       return "success";
    }

}

public interface Interceptor {
   public String intercept(ActionInvocation invocation) throws Exception;
}

public class Test1Intercpetor implements Interceptor{

    public String intercept(ActionInvocation invocation) throws Exception{
         System.out.println("hello!in test1");
         String code= invocation.invoke();
         System.out.println("end!in test1");
         return code;
    }

}

public class Test2Intercpetor implements Interceptor{

    public String intercept(ActionInvocation invocation) throws Exception{
         System.out.println("hello!in test2");
         String code= invocation.invoke();
         System.out.println("end!in test2");
         return code;
    }

}

public interface ActionInvocation {
  public  String invoke() throws Exception  ;
}


public class DefaultInvocation  implements ActionInvocation{

    private List<Interceptor> interceptors =new ArrayList<Interceptor>();
    private int index=-1;
    private String result;
    public String invoke() throws Exception {

        if(index==interceptors.size()-1){
             result=action.execute();
        }else
        {
           index++;
           result=((Interceptor)interceptors.get(index)).intercept(this);
           System.out.println("????"+result);
          
       }
        return result;
    }

    public void addInterceptor(Interceptor interceptor){
        interceptors.add(interceptor);
    }

    private Action action;
    public Action getAction() {
        return action;
    }
    public void setAction(Action action) {
        this.action = action;
    }
   

}


public class Test {
public static void main(String[] args){
    DefaultInvocation d=new DefaultInvocation();
    d.setAction(new TestAction());
    d.addInterceptor(new Test1Intercpetor());
    d.addInterceptor(new Test2Intercpetor());
        try {
            d.invoke();
        } catch (Exception ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        }
}
分享到:
评论

相关推荐

    struts2 Interceptor拦截器

    2. **如何实现**:Struts2提供了一个灵活的Interceptor框架,开发者可以通过实现Interceptor接口来自定义拦截器,也可以通过继承已有的拦截器实现来进行扩展。 3. **配置方式**:Interceptor的配置通过Struts2的配置...

    mybatis-pages:MyBatis 插件Interceptor实现分页 数据库表查询的分页

    总的来说,使用MyBatis的Interceptor实现分页是一种高效且灵活的方式,它减少了代码的重复,提高了代码的可维护性。通过对SQL执行过程的拦截,我们能够根据业务需求定制各种复杂的处理逻辑,而不仅仅局限于分页。在...

    本示例为自定义动画渲染器 Interceptor

    以下是一段简单的Interceptor实现的代码示例: ```java public class MyInterceptor implements ValueAnimator.AnimatorUpdateListener { @Override public void onAnimationUpdate(ValueAnimator animation) { ...

    Interceptor框架的实现

    本文将深入探讨Interceptor框架的实现,主要涉及Java代理和反射技术。 首先,理解Interceptor(拦截器)的概念。拦截器是一种设计模式,它允许我们在方法调用前后插入自定义的行为。在诸如日志记录、性能监控、事务...

    Filter以及Interceptor的区别

    根据提供的部分内容,我们可以看到一个具体的Interceptor实现——`AccessInterceptor`,以及如何在Struts2配置文件中使用它: ```xml &lt;interceptor name="auth" class=...

    利用反射和动态代理机制实现自定义拦截器Interceptor

    利用反射和动态代理机制实现自定义拦截器Interceptor 在本文中,我们将探讨如何利用反射和动态代理机制来实现自定义拦截器Interceptor。拦截器Interceptor是一种常见的设计模式,用于在方法调用前后执行某些操作,...

    fengchao111-springmvc-interceptor-master.zip

    1. **src/main/java**:这里的源代码可能有自定义的Interceptor实现,继承自Spring的`HandlerInterceptor`接口,实现`preHandle`、`postHandle`和`afterCompletion`方法。 2. **src/main/resources**:可能包含...

    Maven版,Spring mvc, CXF WebService, WebService/Controller Interceptor, Sitemesh

    同时,通过Interceptor实现了对请求和响应的精细控制,确保服务的安全性和性能。Sitemesh则用于统一整个Web应用的界面风格,提供一致的用户体验。 总结来说,这个项目展示了如何利用Maven进行项目管理,Spring MVC...

    详解在Spring-Boot中实现通用Auth认证的几种方式

    我们可以使用 Interceptor 来实现通用 Auth 认证。 首先,我们需要定义一个拦截器类 `AppkeyInterceptor`,该类需要实现 `HandlerInterceptor` 接口。然后,我们在 `preHandle()` 方法中判断是否需要拦截请求,如果...

    Spring MVC Interceptor 实现性能监控的功能代码

    在本场景中,我们使用Interceptor来实现性能监控功能,以追踪每个URL的执行时间。 `PerformanceInterceptor` 类实现了 `HandlerInterceptor` 接口,该接口定义了三个方法:`preHandle`、`postHandle` 和 `...

    postman interceptor

    2. **自动化测试辅助**:Interceptor捕获的实际请求数据可以用于创建Postman集合,进一步实现API测试的自动化。 3. **模拟用户行为**:通过Interceptor修改请求参数,可以模拟不同的用户行为,这对测试各种边界条件...

    接口测试插件 Postman Interceptor 1.1.1

    2. **自动化测试**: 将Interceptor捕获的请求保存为Postman集合,可以方便地创建测试脚本,实现接口测试的自动化。 3. **协作与文档**: 通过Interceptor分享请求,团队成员可以复现问题,同时方便生成API文档。 4....

    谷歌浏览器插件—— Ajax Interceptor

    Ajax Interceptor 是一款专为谷歌浏览器(Chrome)设计的插件,它允许开发者在Ajax请求发送后和响应返回前进行干预,从而实现对AJAX请求数据的修改。这款插件对于前端开发、调试以及测试来说是一个强大的工具,特别...

    详解SpringMVC中使用Interceptor拦截器

    1. **Interceptor实现类** SpringMVC提供了两种方式来创建Interceptor: - **实现HandlerInterceptor接口**:这是最常见的实现方式。HandlerInterceptor接口定义了`preHandle()`, `postHandle()`和`...

    聊一聊过滤器与拦截器.doc

       Interceptor 基本介绍 拦截器 Interceptor 是 Spring MVC 提供的一种 AOP(面向切面编程)思想的实现,它允许我们在请求被 Controller 处理之前或之后执行自定义逻辑。与 Filter 不同,Interceptor 更专注于 ...

    Mybatis拦截器介绍及分页插件.pdf

    1. **定义Interceptor实现类**:创建一个新的类并实现`Interceptor`接口。 2. **实现`intercept()`方法**:在此方法中编写具体的拦截逻辑。例如,在方法执行前后添加日志记录等。 3. **实现`plugin()`方法**:决定...

    struts2实现的OA协同办公系统

    3. 工作流管理:支持任务分配、审批流程、状态跟踪等,可能利用Struts2的Action和Interceptor实现流程控制和状态管理。 4. 通知提醒:当有新的任务或消息时,系统应能及时通知用户,这可能需要邮件服务或消息队列的...

    数据采集系统

    6.采用二进制运算实现权限控制,利用interceptor实现粗粒度控制以及重写struts2 标签实现细粒度权限控制.采用二位运算能够使得权限运算更加快捷,而且极大 降低 session存储量,有效利用服务器资源. .系统中通过 cxf ...

    mybatis interceptor

    在本例中,我们探讨的是如何使用 MyBatis Interceptor 来实现分页功能,这对于处理大数据量的查询是至关重要的。 首先,我们需要了解 MyBatis Interceptor 的工作原理。Interceptor 类似于 Java 中的 AOP(面向切面...

Global site tag (gtag.js) - Google Analytics