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: 1. ...
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:
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"> <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>