filterfactory.java

来自「更不用说了,我培训期间的资料,包括每天老师的例子.文件主要包括,HIBERNAT」· Java 代码 · 共 55 行

JAVA
55
字号
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 + =
减小字号Ctrl + -
显示快捷键?