我们可以将任何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="register"></S:submit>
</S:form>
User.java
这是一个简单的POJO类。在这里, 它用作struts的action类和hibernate的持久类。它调用RegisterDao类的register方法, 并以字符串形式返回成功。
package com.srcmini;
public class User {
private int id;
private String name;
//getters and setters
public 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="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>
评论前必须登录!
注册