亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Struts中用PlugIn擴展Hibernate的例子

2019-11-18 12:56:44
字體:
來源:轉載
供稿:網友

  使用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.<br><br>
  * Examples: <br>
  * <code>CONFIG_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 <code>SessionFactory</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
  * 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,如下:
  <?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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕一区日韩电影| 欧美日韩国产精品一区二区三区四区| 亚洲黄页视频免费观看| 成人黄色短视频在线观看| 成人欧美在线观看| 国产精品视频公开费视频| 国产一区二区三区18| 日韩精品视频观看| 亚洲精品一区二区三区不| 日韩av一区二区在线观看| 成人久久久久久久| 国产成人精品999| 日韩中文视频免费在线观看| 亚洲人成电影网站色www| 美日韩在线视频| 色噜噜久久综合伊人一本| 国产免费一区二区三区在线能观看| 亚洲欧洲日产国产网站| 欧美激情性做爰免费视频| 国产成人精品久久久| 日韩av影院在线观看| 久久久久久亚洲精品中文字幕| 欧美日韩国产精品专区| 日韩中文字幕免费看| 26uuu国产精品视频| 日韩高清电影好看的电视剧电影| 国产日韩欧美在线播放| 中文字幕欧美国内| 欧美日韩亚洲一区二区三区| 国产色视频一区| 神马国产精品影院av| 91免费在线视频网站| 亚洲香蕉av在线一区二区三区| 中文字幕不卡在线视频极品| 精品日韩视频在线观看| 亚洲欧美日韩一区在线| 国产精品一区二区久久国产| 国产精品免费一区| 国产精品久久久久久久午夜| 精品毛片三在线观看| 午夜精品一区二区三区视频免费看| 国产精品美女www爽爽爽视频| 国产成人在线视频| 亚洲全黄一级网站| 日韩中文字幕av| 奇门遁甲1982国语版免费观看高清| 久久久亚洲影院| 久久天天躁狠狠躁夜夜爽蜜月| 日韩免费黄色av| 欧美性猛交xxxx乱大交蜜桃| 欧洲日本亚洲国产区| 亚洲欧洲在线观看| 日韩在线观看网站| 亚洲精品影视在线观看| 国产主播精品在线| 人人爽久久涩噜噜噜网站| 国产精品高潮呻吟久久av野狼| 91沈先生作品| 国产伊人精品在线| 欧美一区二区三区精品电影| 97超级碰碰碰久久久| 在线观看日韩av| 久久九九全国免费精品观看| 欧洲亚洲妇女av| 日韩在线精品视频| 欧美丝袜一区二区| 日韩成人xxxx| 欧美性猛交xxxx乱大交| 欧美孕妇与黑人孕交| 日韩电影在线观看中文字幕| 中文字幕亚洲无线码a| 欧美福利在线观看| 中文字幕精品国产| 久久精品国产成人精品| 日产精品99久久久久久| 热久久99这里有精品| 亚洲激情在线视频| 精品香蕉一区二区三区| 亚洲日本中文字幕免费在线不卡| 欧美日韩电影在线观看| 久久综合电影一区| 国产91精品不卡视频| 性欧美长视频免费观看不卡| 亚洲国产天堂网精品网站| 上原亚衣av一区二区三区| 在线观看日韩欧美| 国产原创欧美精品| 欧美日韩国产成人在线观看| 日韩欧美国产一区二区| 欧美午夜激情在线| 欧美另类精品xxxx孕妇| 亚洲图片在线综合| 亚洲视频精品在线| 日韩一区二区三区国产| 欧美午夜视频在线观看| 亚洲专区国产精品| 欧美在线视频观看| 97超碰国产精品女人人人爽| 亚洲精品国产精品乱码不99按摩| 国产精品草莓在线免费观看| 九九热这里只有精品免费看| 国产精品直播网红| 高清一区二区三区日本久| 亚洲精品国产欧美| 在线观看欧美视频| 亚洲美女www午夜| 欧美日韩国产精品专区| 亚洲欧洲国产精品| 国产在线拍揄自揄视频不卡99| 久久久久久久999精品视频| 欧美剧在线观看| 亚洲伊人久久大香线蕉av| 国产精品影片在线观看| 26uuu亚洲国产精品| 亚洲国产精品va在线观看黑人| 亚洲第一av在线| 亚洲色图第三页| 亚洲黄色av女优在线观看| 国产在线拍揄自揄视频不卡99| 在线观看国产成人av片| 欧美男插女视频| 精品无人区乱码1区2区3区在线| 中文字幕成人精品久久不卡| 亚洲最大中文字幕| 国产精品夜色7777狼人| 福利二区91精品bt7086| 国模gogo一区二区大胆私拍| 欧美精品一区在线播放| 久久精品视频在线| 亚洲午夜小视频| 国产精品视频一区国模私拍| 萌白酱国产一区二区| 成人女保姆的销魂服务| 日韩国产高清污视频在线观看| 成人中文字幕+乱码+中文字幕| 亚洲欧美另类中文字幕| 欧美国产精品va在线观看| 亚洲欧美日韩中文在线| 欧美大码xxxx| 亚洲综合自拍一区| 日韩免费在线免费观看| 亚洲成成品网站| 久久99亚洲热视| 中文字幕在线观看亚洲| 亚洲色图国产精品| 77777亚洲午夜久久多人| 久久99国产综合精品女同| 日韩在线观看免费全集电视剧网站| 高潮白浆女日韩av免费看| 久久精品这里热有精品| 97香蕉久久夜色精品国产| 精品久久久久久久久久| 在线电影av不卡网址| 亚洲精品久久久久久久久| 性欧美在线看片a免费观看| 91天堂在线视频| 亚洲欧洲美洲在线综合| 在线观看不卡av| 久久精品在线视频| 国产精品男人爽免费视频1| 国产免费一区二区三区在线观看| 视频在线观看99| 亚洲2020天天堂在线观看| 久久久久久久一区二区三区|