模仿Struts2的Interceptor拦截器实现
模仿Struts2的Interceptor拦截器实现
public interface Invocation {
public Object invoke();
}
public interface Interceptor {
public Object intercept(Invocation invocation);
}
public class Target {
public Object execute() {
System.out.println("Targer.execute()");
return "Targer-execute";
}
}
public class InvocationChain implements Invocation {
private Iterator<Interceptor> iterator = null;
private Target target = new Target();
public void init(List<Interceptor> interceptors) {
List<Interceptor> interceptorsList = new ArrayList<Interceptor>(interceptors);
this.iterator = interceptorsList.iterator();
}
public Object invoke() {
if(iterator.hasNext()) {
return iterator.next().intercept(this);
} else {
return target.execute();
}
}
}
public class IntOne implements Interceptor {
public Object intercept(Invocation invocation) {
Object result = null;
System.out.println("IntOne.intercept()-begin");
result = invocation.invoke();
System.out.println("IntOne.intercept()-end");
return result;
}
}
public class IntTwo implements Interceptor {
public Object intercept(Invocation invocation) {
Object result = null;
System.out.println("IntTwo.intercept()-begin");
result = invocation.invoke();
System.out.println("IntTwo.intercept()-end");
return result;
}
}
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
List<Interceptor> interceptors = new ArrayList<Interceptor>();
interceptors.add(new IntOne());
interceptors.add(new IntTwo());
InvocationChain chain = new InvocationChain();
chain.init(interceptors);
System.out.println(chain.invoke());
}
}
模仿Struts2的Interceptor拦截器实现的更多相关文章
- struts2自定义Interceptor拦截器
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...
- SpringMVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- 5.Struts2中的拦截器
拦截器是Struts2中的核心,其自带很多很多的拦截器,这里主要介绍一下自定义拦截器,恩多一半情况下呢?我们不需要使用到自定义的拦截器,Struts2本身已经提 供了很多的拦截器供我们使用,对于自定义 ...
- struts2基础——自定义拦截器
一.自定义拦截器 默认的拦截器能实现的功能是有限的,Struts2 支持自定义拦截器. 二.拦截器类 1.实现 Interceptor 接口 2.继承 AbstractInterceptor 抽象类, ...
- Struts2(十四)拦截器实现权限管理
一.认识拦截器 拦截器也是一个类 拦截器可以在Action被调用之前和之后执行代码 框架很多核心功能是拦截器实现的 拦截器的特点: 拦截器自由组合,增强了灵活性.扩展性.有利于系统解耦 拦截器可以拦截 ...
- Spring MVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- 十五、struts2中的拦截器(框架功能核心)
十五.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 功能是一回事. 过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面 ...
- SpringMVC 中的Interceptor 拦截器
1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors> <!-- 日志拦截器 --> <mvc:interceptor> ...
随机推荐
- 老毛桃pe装机工具备份系统
电脑故障可以说是难以避免的,误操作或者修改了哪个设置系统就莫名其妙崩溃了.这在日常使用当中并不鲜见,许多用户就会寻求备份系统方法.有没有好的一键备份系统教程可以参考呢?在本篇教程中,就容我跟大家讲讲怎 ...
- HDUOJ----Good Numbers
Good Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- PHP 大数自动转换为科学计数法
前段时间碰到一个很头疼的问题,就是大于12位的数字在PHP中,会自动转成科学计数法表 示. 比如 1234567891234 显示为 1.23456789123E+12 , 最后只能在计算出大数之后, ...
- 项目里面加入redis单机版 和集群版的配置
第一步: 如果你是maven项目,你直接配置就可以了,如果不是需要下载这个包 jedis包 <!-- Redis 客户端 --> <dependency> ...
- POJ 1465 Multiple (BFS,同余定理)
id=1465">http://poj.org/problem?id=1465 Multiple Time Limit: 1000MS Memory Limit: 32768K T ...
- Python 字典 update() 方法
描述 Python 字典 update() 方法用于更新字典中的键/值对,可以修改存在的键对应的值,也可以添加新的键/值对到字典中. 用法与 Python dict() 函数相似. 语法 update ...
- Python rindex() 方法
描述 Python rindex() 方法返回子字符串最后一次出现在字符串中的索引位置,该方法与rfind() 方法一样,只不过如果子字符串不在字符串中会报一个异常. 语法 rindex() 方法语法 ...
- Python acos() 函数
描述 acos() 返回x的反余弦弧度值. 语法 以下是 acos() 方法的语法: import math math.acos(x) 注意:acos()是不能直接访问的,需要导入 math 模块,然 ...
- Android:Textview 通过代码设置 Drawable
解决方案 public void setCompoundDrawables (Drawable left, Drawable top, Drawable right, Drawable bottom) ...
- [svc]Iaas Paas Saas区别
https://www.zhihu.com/question/20387284