直接上代码Filter.java
public
interface
Filter {
//
过滤器
public
void
doFilter(Request request,Response response,FilterChain chain);
}
FilterChain.java
public
class
FilterChain {
//
存放所有的过滤器
private
List<Filter>
filters ;
//
记录当前过滤索引
private
int
index;
//
过滤链初始化
public
FilterChain()
{
filters
=
new
ArrayList<Filter>(10
);
}
public
void
addFilter(Filter filter)
{
filters.add(filter);
}
/**
* 迭代过滤
*/
public
void
doFilter(Request request,Response response)
{
if
( index >=
filters.size() )
return
;
filters.get( index
++ ).doFilter(request, response,
this
);
}
}
Request.java
public
class
Request {
private
String value;
public
String getValue() {
return
value;
}
public
void
setValue(String value) {
this
.value =
value;
}
@Override
public
String toString() {
return
this
.value;
}
}
Response.java
public
class
Response {
private
String value;
public
String getValue() {
return
value;
}
public
void
setValue(String value) {
this
.value =
value;
}
@Override
public
String toString() {
return
this
.value;
}
}
FilterOne.java
public
class
FilterOne
implements
Filter{
/**
* 过滤FUCK字符
*/
@Override
public
void
doFilter(Request request, Response response, FilterChain chain) {
System.out.println(
"进入过滤器FilterOne---------------------------------------"
);
//
执行下一个过滤器
chain.doFilter(request, response);
System.out.println(
"出去过滤器FilterOne---------------------------------------"
);
}
}
FilterTwo.java
public
class
FilterTwo
implements
Filter{
@Override
public
void
doFilter(Request request, Response response, FilterChain chain) {
System.out.println(
"进入过滤器FilterTwo---------------------------------------"
);
//
执行下一个过滤器
chain.doFilter(request, response);
System.out.println(
"出去过滤器FilterTwo---------------------------------------"
);
}
}
Test.java
public
class
Test {
public
static
void
main(String[] args) {
FilterChain chain
=
new
FilterChain();
chain.addFilter(
new
FilterOne());
chain.addFilter(
new
FilterTwo());
chain.doFilter(
new
Request(),
new
Response() );
}
}
运行结果
进入过滤器FilterOne---------------------------------------
进入过滤器FilterTwo
---------------------------------------
出去过滤器FilterTwo
---------------------------------------
出去过滤器FilterOne
---------------------------------------

