Struts中用PlugIn扩展Hibernate的例子

来源:互联网 发布:mysql多个primary key 编辑:程序博客网 时间:2024/06/05 09:08

使用Struts的PlugIn技术把HibernateSessionFactory,过程如下:
  
  (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 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 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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 冲错了游戏点券怎么办 新手玩联盟很菜怎么办 cf玩一会儿卡退怎么办 魔域先锋区封号了怎么办 吃了减肥药头疼怎么办 冬天没用完的霜怎么办 手表带起来大了怎么办 碰到舞警打人该怎么办 合租者偷了东西却没有证据怎么办 钥匙锁在房间了怎么办 家里门钥匙丢了怎么办 合租朝北晒衣服怎么办 卧室门钥匙丢了怎么办 邻居在我家防盗窗上凉被子怎么办 有钥匙打不开门怎么办 白色腈纶衣服洗完发黄怎么办 在部队有人整你怎么办 老公掉粪坑了你怎么办图片 好久没跑步腿疼怎么办 跑1000米要5分钟怎么办 孩子眼睛近视加散光怎么办 在部队混的差怎么办 2岁宝宝走路踮脚怎么办 宝宝走路膝盖弯曲不直怎么办 做了蛙跳大腿疼怎么办 跳完蛙跳腿疼怎么办 腿受凉了疼怎么办偏方 鸭子步蛙跳后腿疼怎么办 戴墨镜鼻子会红怎么办 校服黑色裙子染色了怎么办 新警培训时怀孕怎么办? 大学生欠了网贷怎么办? 车侧面底盘被刮怎么办 军人家属被打没人处理怎么办 孩子字写的难看怎么办 企业k宝锁死了怎么办 建行信用卡密码忘了怎么办 主卧对着卫生间怎么办 不会画农场的画怎么办 泰迪骨折了怎么办护理 狗狗的腿骨折了怎么办