个性化阅读
专注于IT技术分析

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="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>

赞(0)
未经允许不得转载:srcmini » Hibernate和Struts 2集成

评论 抢沙发

评论前必须登录!