Hibernate教程-Hibernate and Struts 2 Integration

我们可以将任何Struts应用程序与Hibernate集成。这不需要额外的努力。
在这个示例中,我们将使用Struts 2框架和Hibernate来创建一个注册表单,并将这些数据存储到数据库中。让我们看看如何创建将Struts 2应用程序与Hibernate集成的文件。
- index.jsp 文件用于获取用户输入。
- User.java 处理请求的Action类。它使用DAO类来存储数据。
- RegisterDao.java 一个使用DAO设计模式来使用Hibernate存储数据的Java类。
- user.hbm.xml 一个包含有关持久类信息的映射文件。在这种情况下,Action类作为持久类。
- hibernate.cfg.xml 一个包含数据库和映射文件信息的配置文件。
- struts.xml 文件包含有关Action类和要调用的结果页面的信息。
- welcome.jsp 一个显示带有用户名的欢迎信息的JSP文件。
- web.xml 一个包含Struts框架的控制器信息的web.xml文件。
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="register"></s:submit>
</s:form>
User.java
这是一个简单的POJO类。它作为Struts的Action类和Hibernate的持久类。它调用RegisterDao类的register方法并返回success字符串。
package cn.javatiku;
public class User {
private int id;
private String name;
// Getters and setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute() {
RegisterDao.saveUser(this);
return "success";
}
}
RegisterDao.java
这是一个使用Hibernate框架保存User类对象的Java类。
package cn.javatiku;
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="cn.javatiku.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
这个文件包含要调用的Action类的信息。这里的Action类是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="cn.javatiku.User">
<result name="success">welcome.jsp</result>
</action>
</package>
</struts>
welcome.jsp
这是一个欢迎文件,显示带有用户名的欢迎信息。
<%@ taglib uri="/struts-tags" prefix="s" %>
Welcome: <s:property value="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>
通过上述步骤,我们实现了将Struts 2与Hibernate集成的示例。在这个示例中,我们创建了一个简单的注册表单,并使用Hibernate将数据存储到数据库中。