Tích hợp Struts 2 với Hibernate




Chúng ta có thể tích hợp bất cứ ứng dụng Struts nào với Hibernate. Bạn cần có các jar file cho Struts 2 và Hibernate. Chương này, chúng ta tạo ví dụ tạo registration form bởi sử dụng Struts 2 và lưu trữ dữ liệu này bên trong Database bởi sử dụng Hibernate. Dưới đây là các file cần thiết:

  • index.jsp để lấy input từ người dùng.

  • user.java: một lớp action để xử lý request. Nó sử dụng lớp DAO để lưu trữ dữ liệu.

  • registerDao.java: một lớp java mà sử dụng mẫu thiết kế DAO để lưu trữ dữ liệu bởi sử dụng Hibernate.

  • user.hbm.xml: Một file ánh xạ mà chứa thông tin về lớp persistent. Ở đây, lớp action làm việc như lớp persistent trong Hibernate.

  • hibernate.cfg.xml: một file cấu hình chứa thông tin về Database và file ánh xạ.

  • struts.xml: chứa thông tin về lớp action và result để được triệu hồi.

  • welcome.jsp: hiển thị thông tin Welcome tới người dùng.

  • web.xml: chứa thông tin về Controller của Struts Framework.

1. Tạo index.jsp

Trong page này, chúng ta tạo một form bởi sử dụng struts-tags. Tên của action cho form này là 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>

2. Tạo user.java

Đây là một lớp POJO đơn giản. Tại đây, nó làm việc như là lớp action cho Struts và là lớp persistent cho Hibernate. Nó gọi phương thức register của lớp RegisterDao và trả về success ở dạng chuỗi.

package com.vietjack;

public class User {
private int id;
private String name;
//phuong thuc getter va setter

public String execute(){
	RegisterDao.saveUser(this);
	return "success";
}

}

3. Tạo registerDao.java

Đây là một lớp Java mà lưu giữ đối tượng của lớp User bởi sử dụng Hibernate Framework.

package com.vietjack;

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;

}

}

4. user.hbm.xml

File ánh xạ nay chứa tất cả thông tin của lớp persistent.

<?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.vietjack.User" table="user451">
<id name="id">
<generator class="increment"></generator>
</id>
<property name="name"></property>
</class>
          
</hibernate-mapping>

5. Tạo hibernate.cfg.xml

File cấu hình này chúa thông tin về Database và file ánh xạ. Ở đây, chúng ta sử dụng thuộc tính hb2ddl.auto, vì thế bạn không cần tạo bảng trong Database.

<?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>

6. Tạo struts.xml

File này chứa thông tin về lớp action để được triệu hồi. Lớp action ở đây là 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.vietjack.User">
<result name="success">welcome.jsp</result>
</action>
</package>
</struts> 

6. Tạo welcome.jsp

Hiển thị thông điệp welcome với username.

<%@ taglib uri="/struts-tags" prefix="S" %>

Welcome: <S:property value="name"/>

7. Tạo web.xml

Chứa thông tin về Controller. Với Struts 2, lớp StrutsPrepareAndExecuteFilter làm việc như là Controller.

<?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>