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:
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>
Đâ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.hoclaptrinh;
public class User {
private int id;
private String name;
//phuong thuc getter va setter
public String execute(){
RegisterDao.saveUser(this);
return "success";
}
}
Đâ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.hoclaptrinh;
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;
}
}
File ánh xạ nay chứa tất cả thông tin của lớp persistent.
<?xml version='1.0' encoding='UTF-8'?>
<hibernate-mapping>
<class name="com.hoclaptrinh.User" table="user451">
<id name="id">
<generator class="increment"></generator>
</id>
<property name="name"></property>
</class>
</hibernate-mapping>
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'?>
<!-- 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>
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" ?>
<struts>
<package name="abc" extends="struts-default">
<action name="register" class="com.hoclaptrinh.User">
<result name="success">welcome.jsp</result>
</action>
</package>
</struts>
Hiển thị thông điệp welcome với username.
<%@ taglib uri="/struts-tags" prefix="S" %>
Welcome: <S:property value="name"/>
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>
Unpublished comment
Viết câu trả lời