Struts中用PlugIn扩展Hibernate的例子
2007-07-02 11:12
423 查看
使用[b]Struts[/b]的PlugIn技术把[b]Hibernate[/b]SessionFactory,过程如下:
(1) 创建HibernateSessionFactory.java,代码如下:
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:
*
*/
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
*
* @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 HibernatePlugin
implements 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 shutdown
public 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 startup
public void init(ActionServlet actionServlet, ModuleConfig config) throws
ServletException {
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,如下:
这一部分就是你的嵌入代码
(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
(1) 创建HibernateSessionFactory.java,代码如下:
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
SessionFactoryif 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 HibernatePlugin
implements 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 shutdown
public 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 startup
public void init(ActionServlet actionServlet, ModuleConfig config) throws
ServletException {
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,如下:
这一部分就是你的嵌入代码
(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
相关文章推荐
- Struts的扩展(PlugIn,ActionServlet,RequestProcess)
- Hibernate+Spring+Struts扩展Struts
- struts&hibernate&spring例子
- 用eclipse+Hibernate Synchronizer(plugin)开发例子
- [转]Struts2+hibernate例子
- struts+hibernate+spring一个入门的实用例子(上)
- Spring+struts2+hibernate框架的Java Web项目利用POI导出Excel简单例子
- struts+spring+hibernate的一个完整的例子
- hibernate+spring+struts例子
- 通过Struts Plugin完成Hibernate的SessionFactory初始化
- struts+hibernate+spring一个入门的实用例子(下)
- jpetstore 学习的好例子 struts+spring+hibernate
- Eclipse + MyEclipse整合Struts+Spring+Hibernate简单例子开发
- struts+hibernate+spring一个入门的实用例子
- Myeclipse+hibernate+struts+Tomcat 例子
- [Struts]HibernatePlugIn for Struts(转贴)
- 整合Hibernate3.3和struts2.3.8的小例子
- Hibernate+Spring+Struts扩展Struts
- Hibernate+Struts例子
- SSH架构(Struts+Spring+Hibernate)介绍和一个例子72