package filter;
public interface Filter {
public abstract void doProcess(FilterChain chains, String request, String response);
}
package filter;
public class AuditFilter implements Filter {
public void doProcess(FilterChain chains, String request, String response) {
System.out.println("AuditFilter begin!");
chains.processFilter(request, response);
System.out.println("AuditFilter end!");
}
}
package filter;
public class SecurityFilter implements Filter {
public void doProcess(FilterChain chains, String request, String response) {
System.out.println("SecurityFilter begin!");
chains.processFilter(request, response);
System.out.println("SecurityFilter end!");
}
}
package filter;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class FilterChain {
private List filters;
Iterator iter;
public FilterChain() {
filters = new ArrayList();
}
public void addFilter(Filter filter) {
filters.add(filter);
iter= filters.iterator();
}
public void processFilter(String request, String response) {
if(iter.hasNext()) {
Filter filter = (Filter) iter.next();
filter.doProcess(this, request, response);
}
}
}
package filter;
public class FilterManager {
private FilterChain chains;
public void execute(String request, String response) {
chains.addFilter(new AuditFilter());
chains.addFilter(new SecurityFilter());
chains.processFilter(request, response);
}
public static void main(String[] args) {
FilterManager fm = new FilterManager();
fm.chains = new FilterChain();
fm.execute(null, null);
}
}
下面是控制台输出
AuditFilter begin!
SecurityFilter begin!
SecurityFilter end!
AuditFilter end!
分享到:
相关推荐
用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern) 抽象工厂模式...
在J2EE设计模式部分,文档提到的是Intercepting Filter模式,这是一种在Web应用中处理请求和响应的架构模式。它允许开发者对客户端的请求和响应进行预处理和后处理,满足安全性、性能和其他的业务逻辑需求。文档描述...
#### 拦截过滤器模式(Intercepting Filter Pattern) 拦截过滤器模式允许你在一个请求到达目标对象之前,对其进行预处理或后处理。这种模式常用于实现统一的安全性检查、事务管理等功能。 #### 服务定位器模式...
在给定的部分内容中,我们关注的是"拦截过滤器"(Intercepting Filter)模式,这是Core J2EE Patterns中的一个重要概念。 **拦截过滤器模式** 拦截过滤器模式主要解决的问题是:在客户端Web请求到达业务处理组件...
标题《Core J2EE Patterns Best Practices And Design Strategies》和描述部分介绍了软件设计模式的重要性,将设计模式比喻为一个组织的“部落记忆”的有形体现。设计模式是解决常见问题的通用解决方案,它源自之前...
**拦截过滤器模式(Intercepting Filter Pattern)**是一种软件设计模式,主要用于对应用程序的请求或响应进行预处理或后处理。它允许我们在请求到达目标组件之前或响应离开目标组件之后插入一系列过滤器,这些过滤...
- 拦截过滤器(Intercepting Filter):用于在请求达到目标组件之前进行预处理。 - 前台控制器(Front Controller):作为所有请求的入口点,统一处理流程。 - 环境对象(Environment Object):提供对系统环境...
### Core J2EE Patterns:拦截过滤器模式 (Intercepting Filter) #### 背景与情境 在J2EE环境中,请求处理机制需要处理多种类型的客户端请求,这些请求可能涉及不同的处理逻辑。例如,某些请求可能直接转发到相应...
它通过一套经过验证的设计模式,为开发者提供了处理特定问题的标准化方案,从而大大提高了软件开发的效率和质量。 ### 模式与OOAD 面向对象分析与设计(OOAD)是J2EE模式的重要基石。OOAD不仅提供了一种统一的语言...
1. **Intercepting Filter(拦截过滤器)**:此模式允许在请求到达目标资源前插入一系列过滤器,每个过滤器可以执行预处理逻辑(如日志记录)并选择是否继续传递请求到下一过滤器或目标资源。 2. **Front Controller...
此时,Intercepting Filter(截获过滤器)设计模式成为理想选择。在Servlet 2.3及更高版本中,过滤器允许开发者在请求到达Web资源前对其进行拦截,处理后修改响应,从而实现了对Web应用的预处理和后期处理逻辑。 ...