在Struts中使用PlugIn扩展Hibernate

浮夸真

浮夸真

2016-02-19 20:30

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享在Struts中使用PlugIn扩展Hibernate,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。
 

使用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.brbr  * Examples: br  * codeCONFIG_FILE_LOCATION = "/hibernate.conf.xml".  * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml"./code  */  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 codeSessionFactory/code 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  * WindowPreferencesJavaCode GenerationCode 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,如下:

  ?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
展开更多 50%)
分享

猜你喜欢

在Struts中使用PlugIn扩展Hibernate

编程语言 网络编程
在Struts中使用PlugIn扩展Hibernate

Hibernate+Spring+Struts扩展Struts

Java JAVA基础
Hibernate+Spring+Struts扩展Struts

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在Java SE中使用Hibernate处理数据

编程语言 网络编程
在Java SE中使用Hibernate处理数据

在Java中使用枚举

编程语言 网络编程
在Java中使用枚举

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在IE中使用JavaScript

Web开发
在IE中使用JavaScript

在DLL中使用资源

编程语言 网络编程
在DLL中使用资源

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Java编程经验技巧 谨慎使用Date和Time类

Java编程经验技巧 谨慎使用Date和Time类

Java程序员 Sun降低开源Java系统开发门槛

Java程序员 Sun降低开源Java系统开发门槛
下拉加载更多内容 ↓