📄 filterfactory.java
字号:
package server.business.filter;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.util.*;
public class FilterFactory {
private static FilterFactory instance=new FilterFactory();
private FilterFactory(){}
public static FilterFactory newInstance(){
return instance;
}
//根据配置文件,生成过滤器链,返回头节点
public Filter getFilter(){
try {
List<Filter> filters=new ArrayList<Filter>();
List<String> names=this.getFilterNames();
for(String s:names){
Class c=Class.forName(s);
Object o=c.newInstance();
filters.add((Filter)o);
}
for(int i=0;i<filters.size()-1;i++){
Filter f1=filters.get(i);
Filter f2=filters.get(i+1);
f1.setNext(f2);
}
return filters.get(0);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private List<String> getFilterNames() throws Exception{
List<String> names=new ArrayList<String>();
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.parse("config/filter.xml");
NodeList filters=doc.getElementsByTagName("Filter");
for(int i=0;i<filters.getLength();i++){
Element e=(Element)(filters.item(i));
String name=e.getTextContent().trim();
names.add(name);
}
return names;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -