Hibernate和Struts 2集成

我们可以将任何struts应用程序与hibernate集成。无需额外的努力。
在此示例中, 我们将结合使用带有Hibernate的struts 2框架。你需要具有Struts 2和休眠状态的jar文件。
Hibernate和struts2集成的示例
在此示例中, 我们将使用struts2创建注册表单, 并使用Hibernate将这些数据存储到数据库中。让我们看看为将struts2应用程序与hibernate集成而应该创建的文件。

  • index.jsp文件以获取用户输入。
  • User.java一个用于处理请求的操作类。它使用dao类存储数据。
  • RegisterDao.java一个Java类, 该类使用DAO设计模式来使用休眠模式存储数据。
  • user.hbm.xml一个映射文件, 其中包含有关持久类的信息。在这种情况下, 动作类用作持久类。
  • hibernate.cfg.xml一个配置文件, 其中包含有关数据库和映射文件的信息。
  • struts.xml文件包含有关操作类和要调用的结果页面的信息。
  • welcome.jsp一个jsp文件, 显示带有用户名的欢迎信息。
  • web.xml一个web.xml文件, 其中包含有关Struts控制器框架的信息。
index.jsp在此页面中, 我们使用struts标记创建了一个表单。该表单的动作名称是register。
< %@ taglib uri="/struts-tags" prefix="S" %> < S:form action="register"> < S:textfield name="name" label="Name"> < /S:textfield> < S:submit value="http://www.srcmini.com/register"> < /S:submit> < /S:form>

User.java【Hibernate和Struts 2集成】这是一个简单的POJO类。在这里, 它用作struts的action类和hibernate的持久类。它调用RegisterDao类的register方法, 并以字符串形式返回成功。
package com.srcmini; public class User { private int id; private String name; //getters and setterspublic String execute(){ RegisterDao.saveUser(this); return "success"; }}

RegisterDao.java这是一个Java类, 它使用Hibernate框架保存User类的对象。
package com.srcmini; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class RegisterDao {public static int saveUser(User u){Session session=new Configuration(). configure("hibernate.cfg.xml").buildSessionFactory().openSession(); Transaction t=session.beginTransaction(); int i=(Integer)session.save(u); t.commit(); session.close(); return i; }}

user.hbm.xml该映射文件包含永久类的所有信息。
< ?xml version='1.0' encoding='UTF-8'?> < !DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> < hibernate-mapping> < class name="com.srcmini.User" table="user451"> < id name="id"> < generator class="increment"> < /generator> < /id> < property name="name"> < /property> < /class> < /hibernate-mapping>

hibernate.cfg.xml此配置文件包含有关数据库和映射文件的信息。在这里, 我们使用hb2ddl.auto属性, 因此你无需在数据库中创建表。
< ?xml version='1.0' encoding='UTF-8'?> < !DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> < !-- Generated by MyEclipse Hibernate Tools.--> < hibernate-configuration> < session-factory> < property name="hbm2ddl.auto"> update< /property> < property name="dialect"> org.hibernate.dialect.Oracle9Dialect< /property> < property name="connection.url"> jdbc:oracle:thin:@localhost:1521:xe< /property> < property name="connection.username"> system< /property> < property name="connection.password"> oracle< /property> < property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver< /property> < mapping resource="user.hbm.xml"/> < /session-factory> < /hibernate-configuration>

struts.xml该文件包含有关要调用的动作类的信息。这里的动作类是User。
< ?xml version="1.0" encoding="UTF-8" ?> < !DOCTYPE struts PUBLIC "-//Apache Software Foundation //DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> < struts> < package name="abc" extends="struts-default"> < action name="register" class="com.srcmini.User"> < result name="success"> welcome.jsp< /result> < /action> < /package> < /struts>

welcome.jsp这是欢迎文件, 显示带有用户名的欢迎消息。
< %@ taglib uri="/struts-tags" prefix="S" %> Welcome: < S:property value="http://www.srcmini.com/name"/>

web.xml这是web.xml文件, 其中包含有关控制器的信息。对于Struts2, StrutsPrepareAndExecuteFilter类用作控制器。
< ?xml version="1.0" encoding="UTF-8"?> < web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> < welcome-file-list> < welcome-file> index.jsp< /welcome-file> < /welcome-file-list> < filter> < filter-name> struts2< /filter-name> < filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter < /filter-class> < /filter> < filter-mapping> < filter-name> struts2< /filter-name> < url-pattern> /*< /url-pattern> < /filter-mapping> < /web-app>

    推荐阅读