浏览 1705 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-22
代码如下: package zy.pro.td.util; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import net.sf.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html}. */ public class HibernateSessionFactory { /** * Location of Hibernate.cfg.xml file. * NOTICE: Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. That * is place the config file in a Java package - the default location * is the default Java package. * Examples: * CONFIG_FILE_LOCATION = "/hibernate.conf.xml". * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml". */ private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; /** Holds a single instance of Session */ private final ThreadLocal threadLocal = new ThreadLocal(); /** The single instance of Hibernate configuration */ private final Configuration cfg = new Configuration(); /** The single instance of Hibernate SessionFactory */ private net.sf.hibernate.SessionFactory sessionFactory; /** * Returns the ThreadLocal Session instance. Lazy initialize * the SessionFactory if needed.** @return Session * @throws HibernateException */ public Session currentSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null) { if (sessionFactory == null) { try {cfg.configure(CONFIG_FILE_LOCATION); sessionFactory = cfg.buildSessionFactory(); }catch (Exception e) { system.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } session = sessionFactory.openSession(); threadLocal.set(session); } return session; } /** * Close the single Hibernate session instance.* * @throws HibernateException */ public void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) {session.close();} } /** * Default constructor. */ public HibernateSessionFactory() {} } (2)创建HibernatePlugIn.java,代码如下: package zy.pro.td.plugin; /** Created on Oct 4, 2004* * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ import javax.servlet.ServletException; import org.apache.struts.action.ActionServlet; import org.apache.struts.action.PlugIn; import org.apache.struts.config.ModuleConfig; import javax.naming.Context; import javax.naming.InitialContext; import zy.pro.td.util.HibernateSessionFactory; /** * @author sunil* *This class will initialize Hibernate and bind SessionFactory in JNDI *at the*time of application and startup and unbind it from JNDI at *the time of application * shutdown */ public class HibernatePluginimplements PlugIn { private static final String jndi_hibernate = "jndi_hibernate_factory"; private HibernateSessionFactory hsf; private String name; public HibernatePlugin() { hsf=new HibernateSessionFactory(); }// This method will be called at the time of application shutdownpublic void destroy() { system.out.println("Entering HibernatePlugIn.destroy()"); //Put Hibernate cleanup code here system.out.println("Exiting HibernatePlugIn.destroy()");} //This method will be called at the time of application startuppublic void init(ActionServlet actionServlet, ModuleConfig config) throwsServletException { system.out.println("Entering HibernatePlugIn.init()"); system.out.println("Value of init parameter " + getName()); //Uncomment next two lines if you want to throw UnavailableException from your servlet //if(true) //throw new ServletException("Error configuring HibernatePlugIn"); system.out.println("Exiting HibernatePlugIn.init()"); bindFactoryToJNDI(); } private void bindFactoryToJNDI() { try {Context ctx = new InitialContext(); ctx.bind(this.jndi_hibernate,hsf); system.out.println("bindind the Hibernate factory to JNDI successfully"); }catch (Exception e) {e.printStackTrace();}}public String getName() { return name; } public void setName(String string) { name = string; } } (3)配置Struts-config.xml,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <form-beans> <form-bean name="userActionForm" type="zy.pro.td.controller.UserActionForm" /> </form-beans> <action-mappings> <action name="userActionForm" path="/act/log/login" scope="request" type="zy.pro.td.controller.LoginAction" /> </action-mappings> <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> </plug-in> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> </plug-in> <plug-in className="zy.pro.td.plugin.HibernatePlugin" /> <plug-in className="zy.pro.td.plugin.HibernateSessionFactoryPlugIn" /> </struts-config>这一部分就是你的嵌入代码 (4)创建ActionForm,代码如下: package zy.pro.td.controller; import org.apache.struts.action.*; import javax.servlet.http.*; public class UserActionForm extends ActionForm { private String password;private String username; public String getPassword() { return password; } public void setPassword(String password) {this.password = password;}public String getUsername() {return username;} public void setUsername(String username) {this.username = username;}public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) { /**@todo: finish this method, this is just the skeleton.*/ return null; } public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {} } (5)创建Action package zy.pro.td.controller; import org.apache.struts.action.*; import javax.servlet.http.*; import javax.naming.Context; import javax.naming.InitialContext; import net.sf.hibernate.SessionFactory; import net.sf.hibernate 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |