`
ivorytower
  • 浏览: 74003 次
  • 性别: Icon_minigender_1
  • 来自: 成都-->@深圳
社区版块
存档分类
最新评论

在Struts中使用PlugIn扩展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 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
 

分享到:
评论

相关推荐

    struts2+spring+hibernate 整合的jar包

    4. **整合Struts2和Spring**:使用Struts2的Spring插件,将Spring管理的Bean注入到Struts2的Action中,通常通过`&lt;struts-plugin&gt;`标签进行配置。 5. **配置Struts2**:创建Struts2的配置文件(struts.xml),定义...

    struts2和spring和Hibernate整合的jar包

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决应用程序的不同问题,而将这三者整合在一起可以构建高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求...

    struts1+spring+hibernate整合项目实现登录

    4. **整合Struts1和Spring**:使用Spring的`StrutsActionProxy`或`Struts2SpringPlugin`将Spring的依赖注入功能引入到Struts1中,这样Action类可以通过Spring自动注入所需的服务。 5. **创建登录模块**:在Struts1...

    struts2和spring和hibernate整合所需包集合.rar

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在应用程序的不同层面发挥着重要作用。Struts2主要用于控制层,实现MVC(Model-View-Controller)设计模式;Spring是一个全面的后端框架,提供了...

    Struts2 + Spring + Hibernate + DWR 项目布署笔记

    在`struts2-spring-plugin-2.0.11.2.jar`中,包含了Struts2与Spring集成所需的类和配置,帮助管理Struts2的Action实例。 其次,Spring框架是Java开发的核心工具,它不仅提供了DI和AOP,还支持事务管理、数据访问...

    Demo_struts2_Spring_Hibernate

    4. **配置Struts2-Hibernate**:通过Struts2的插件,将Hibernate SessionFactory注入到Spring中,以便在Action中可以直接使用Session对象进行数据库操作。 5. **事务管理**:Spring提供了声明式事务管理,只需在...

    struts2+spring3+hibernate3所需jar包

    在开发过程中,为了使用这三个框架,开发者通常需要下载一系列的jar包,包括Struts2的核心库、Spring的核心库、Hibernate的主库以及它们各自的依赖。这些jar包通常会包含以下组件: 1. Struts2的核心库:struts2-...

    struts2-spring-hibernate

    接着,在Struts2的配置文件中,我们可以使用Spring插件(struts2-spring-plugin)来声明Action类,并指定其由Spring容器创建和管理。 在Action类中,通过@Autowired注解注入SessionFactory,然后通过SessionFactory...

    struts2、spring和hibernate的集成

    Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的集成是构建高效、灵活和可扩展的企业级应用程序的重要方式。Struts2作为MVC(模型-视图-控制器)框架,负责处理HTTP请求,管理视图与业务逻辑的...

    Struts2+Spring2+hibernate整合开发所需要的基本JAR包

    Struts2、Spring2和Hibernate是Java Web开发中三大核心框架,它们的整合使用能够构建出高效、松耦合的企业级应用。以下是对这三大框架整合开发所需基本JAR包的详细说明: **Struts2** 是一个强大的MVC(Model-View-...

    struts2+hibernate+spring整合jar包

    在这个“struts2+hibernate+spring整合jar包”中,我们重点关注这三个框架的集成以及相关库的使用。 Struts2是MVC(模型-视图-控制器)设计模式的实现,它负责处理HTTP请求,提供一个可扩展的框架来管理应用程序的...

    Struts2+Spring+Hibernate搭建登录实例完整步骤

    首先,你需要在项目中引入Struts2、Spring和Hibernate的相关依赖库。这些库通常可以通过Maven或Gradle等构建工具来管理。确保配置文件如pom.xml或build.gradle正确包含这三个框架的最新稳定版本。 1. **Struts2配置...

    Struts2+Spring+Hibernate整合实例

    2. **整合Spring**:在Struts2中使用Spring的IoC容器管理Action类,将业务逻辑组件注入到Action中,通常会配置struts-plugin.xml以启用Spring插件。 3. **配置Hibernate**:设置Hibernate的配置文件(hibernate.cfg....

    struts2 + spring + hibernate的集成

    4. **整合Struts2-Spring**:引入Spring插件,如`struts2-spring-plugin.jar`,并在`struts.properties`或`struts.xml`中启用Spring插件。 5. **整合Spring-Hibernate**:使用Spring的HibernateTemplate或JPA的...

    ssh(struts2+spring+hibernate)lib包

    在"ssh(struts2+spring+hibernate)lib包"中,包含了这三个框架所需的jar文件,这些库文件是运行SSH项目的基础。例如,Struts2的lib包通常会包含struts2-core、struts2-convention、struts2-json-plugin等核心及...

    Struts2.1.8+Hibernate3.3+Spring3.0环境搭建

    这通常涉及在`struts.xml`中使用Spring插件标签,以及在`applicationContext.xml`中定义SessionFactory bean。 在完成以上步骤后,开发者可以开始编写业务逻辑、DAO(数据访问对象)、模型类、视图和控制器,构建出...

    Struts2+Spring+Hibernate整合包

    Struts2、Spring和Hibernate是Java Web开发中的三大主流开源框架,它们的整合使用能够构建出高效、可维护的企业级应用程序。本整合包是专为方便开发者快速搭建SSH环境而设计的,它提供了SSH框架所需的最小JAR集合,...

    Struts2+Spring3+Hibernate4整合的jar包

    1. Struts2的核心库,包括struts2-core、struts2-convention-plugin、struts2-dojo-plugin等,用于实现MVC架构和扩展功能。 2. Spring的各模块库,如spring-context、spring-beans、spring-webmvc等,提供DI、AOP等...

    struts2+spring+hibernate框架jar包

    5. 整合Struts2和Spring:使用Spring插件(struts2-spring-plugin)实现Action的依赖注入,将业务逻辑层(Service)和数据访问层(DAO)的bean注入到Action中。 6. 整合Spring和Hibernate:通过Spring的...

    Struts2+Spring+Hibernate开发环境搭建图解

    在示例中,创建了一个名为`struts2`的包,它扩展了`struts-default`,意味着继承了默认的配置。 - 在`web.xml`中配置Struts2的过滤器,这里使用的是`FilterDispatcher`,它是Struts2的旧版过滤器,现在通常推荐使用...

Global site tag (gtag.js) - Google Analytics