各种类的dao就是一种服务类,没有必要创建多次,可以创建一个生产dao的工厂类
package com.bjsxt.util;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class DaoFactory {
private static Map<String, Object> map = new HashMap<String, Object>();
static {
Properties properties = new Properties();
try {
properties.load(DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties"));
Enumeration<Object> enumeration = properties.keys();
while (enumeration.hasMoreElements()) {
String key = (String) enumeration.nextElement();
String value = properties.getProperty(key);
Class clazz = Class.forName(value);
Object obj = clazz.newInstance();
map.put(key, obj);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 根据key获取对应的dao
public static Object createInstance(String key) {
return map.get(key);
}
}
package com.bjsxt.action;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpSession;
import javax.swing.text.html.HTMLDocument.HTMLReader.PreAction;
import org.apache.struts2.ServletActionContext;
import com.bjsxt.dao.StudentDao;
import com.bjsxt.po.Course;
import com.bjsxt.po.Student;
import com.bjsxt.util.DaoFactory;
import com.opensymphony.xwork2.ActionSupport;
public class StudentAction extends ActionSupport{
private StudentDao studentDao=(StudentDao) new DaoFactor().createInstance("StudentDao");
dao.properties