14/08/2018, 11:26

Ví dụ Registration Form trong Struts 2

Trong ví dụ này, chúng ta sẽ tạo một Registration Form bởi sử dụng các UI tags và lưu trữ các thông tin này vào trong Oracle Database. Bạn cũng có thể sử dụng Database khác như MySQL, DB2, … tùy theo yêu cầu của bạn. Bạn theo dõi bảng mà ta đã tạo trong Oracle Database. Trong bảng này ...

Trong ví dụ này, chúng ta sẽ tạo một Registration Form bởi sử dụng các UI tags và lưu trữ các thông tin này vào trong Oracle Database. Bạn cũng có thể sử dụng Database khác như MySQL, DB2, … tùy theo yêu cầu của bạn. Bạn theo dõi bảng mà ta đã tạo trong Oracle Database. Trong bảng này chúng tôi đã không tạo bất cứ id nào cho mỗi người dùng để đơn giản hóa ví dụ, nhưng khi làm việc thì tốt hơn hết bạn nên tạo id.

CREATE TABLE  "STRUTSUSER" 
   (	"NAME" VARCHAR2(4000), 
	"PASSWORD" VARCHAR2(4000), 
	"EMAIL" VARCHAR2(4000), 
	"GENDER" VARCHAR2(4000), 
	"COUNTRY" VARCHAR2(4000)
   )

Dưới đây là các bước để tạo ứng dụng Registration Form trong Struts 2:

Tạo index.jsp

JSP page đơn giản này sử dụng hai UI tags để tạo một form để lấy input từ người dùng.

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

<s:form action="register">
<s:textfield name="name" label="UserName"></s:textfield>
<s:password name="password" label="Password"></s:password>
<s:textfield name="email" label="Email"></s:textfield>
<s:radio list="{'male','female'}" name="gender"></s:radio>
<s:select cssStyle="awidth:155px;"list="{'vietnam','anh','nuockhac',}"
name="country" label="Country"></s:select>

<s:submit value="register"></s:submit>

</s:form>

Tạo lớp action

:

Lớp Action này có 5 trường và một phương thức execute. Như bạn biết, Struts Framework tạo instance của lớp action cho mỗi request, vì thế chúng ta đang truyền đối tượng này trong cùng phương thức của lớp RegisterDao.

RegisterAction.java

package com.vietjack;

public class RegisterAction {
private String name,password,email,gender,country;

//Phuong thuc setter va getter
public String execute(){
	int i=RegisterDao.save(this);
	if(i>0){
	return "success";
	}
	return "error";
}
}

Tạo lớp để lưu trữ dữ liệu

Lớp này lấy thông tin từ đối tượng của lớp RegisterAction và lưu trữ các thông tin này trong bảng Strutsuser.

RegisterDao.java

package com.vietjack;
import java.sql.*;
public class RegisterDao {

public static int save(RegisterAction r){
int status=0;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe","system","oracle");

PreparedStatement ps=con.prepareStatement("insert into strutsuser values(?,?,?,?,?)");
ps.setString(1,r.getName());
ps.setString(2,r.getPassword());
ps.setString(3,r.getEmail());
ps.setString(4,r.getGender());
ps.setString(5,r.getCountry());
		
status=ps.executeUpdate();

}catch(Exception e){e.printStackTrace();}
	return status;
}
}

Ánh xạ request trong struts.xml file và định nghĩa các thành phần view

xml file này chứa thông tin về package, lớp action và các thành phần view.

struts.xml

<?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="default" extends="struts-default">

<action name="register" class="com.vietjack.RegisterAction">
<result name="success">register-success.jsp</result>
<result name="error">register-error.jsp</result>
</action>

</package>
</struts>       
 

Tạo các thành phần view

Tại đây, chúng ta tạo hai thành phần view là register-success.jsp và register-error.jsp.

register-success.jsp

<%@ taglib uri="/struts-tags" prefix="s" %>
Welcome, <s:property value="name"></s:property>

register-error.jsp

<%@ taglib uri="/struts-tags" prefix="s" %>
Sorry, some error occured!
<s:include value="index.jsp"></s:include>
0