前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Struts2拦截器模拟

Struts2拦截器模拟

作者头像
云海谷天
发布2022-08-09 13:50:50
1660
发布2022-08-09 13:50:50
举报
文章被收录于专栏:技术一点点成长

前言:

  接触Struts2已经有一段时间,Student核心内容就是通过拦截器对接Action,实现View层的控制跳转。本文根据自身理解对Struts2进行一个Java实例的模拟,方便大家理解!

示意图

  通过以上简单的示意图,我们可以看到Struts2将ServletAPI与业务处理分离,让开发者能够在用户向客户端发送请求的时候通过拦截机制更好的进行业务层处理,提高开发效率。下面我们就通过几个Java类模拟Struts2拦截器的实现。

拦截原理

代码设计:

  • 1ActionInvocation
代码语言:javascript
复制
package com.simulink;

import java.util.ArrayList;
import java.util.List;

public class AntionInvocation {

    Action a = new Action();
    int index = -1;
    List<Interceptor> interceptors = new ArrayList<Interceptor>();

    public AntionInvocation() {
        interceptors.add(new FirstInterceptor());
        interceptors.add(new SecondInterceptor());
    }

    public void invoke() {
        index++;
        // System.out.println("index:" + index);
        if (index >= this.interceptors.size()) {
            a.execute();
        } else {
            this.interceptors.get(index).intercept(this);
        }
    }

}
  • FirstInterceptor类
代码语言:javascript
复制
package com.simulink;

public class FirstInterceptor implements Interceptor {

    @Override
    public void intercept(AntionInvocation invocation) {
        System.out.println(-1);
        invocation.invoke();
        System.out.println(1);
    }

}
  • SecondInterceptor类
代码语言:javascript
复制
package com.simulink;

public class SecondInterceptor implements Interceptor {

    @Override
    public void intercept(AntionInvocation invocation) {
        System.out.println(-2);
        invocation.invoke();
        System.out.println(2);
    }

}
  • Action类
代码语言:javascript
复制
package com.simulink;

public class Action {
    public void execute(){
        System.out.println("execute!");
    }
}
  • 5测试类Main
代码语言:javascript
复制
package com.simulink;

public class Main {

/**
* @param args
*/
public static void main(String[] args) {
new AntionInvocation().invoke();
}

}

输出结果:

代码语言:javascript
复制
-1
-2
execute!
2
1

后记:接触过WebWork的朋友应该会发觉struts2跟其很相似,实际上Struts2就是Struts1和WebWork的结合体。其主要技术大部分来自WebWork!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示意图
  • 拦截原理
  • 代码设计:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档