Hungkin’s Blog

Tìm hiểu về Struts 2 (P.4)

Posted by hungkin™ on 23/05/2009

Ứng dụng lưu thông tin

Một trang JSP cho phép người dùng nhập các thông tin cần thiết, click OK để lưu các thông tin trên
– Model:
Tạo lớp bean Infor.java, đây là lớp chứa thông tin cần thiết để lưu

package java.exam;

public class Infor {
private int code;
private String title;
/**
* @return the code
*/
public int getCode() {
return code;
}
/**
* @param code the code to set
*/
public void setCode(int code) {
this.code = code;
}
/**
* @return the title
*/
public String getTitle() {
return title;
}
/**
* @param title the title to set
*/
public void setTitle(String title) {
this.title = title;
}

}

Tạo lớp đóng vai trog các là lớp xử lý các chứa năng liên quan đến Model, lớp Processor.java

package java.exam;

public class Processor {
public boolean saveInfor(Infor infor){
if (infor == null)
return false;
System.out.println(“Save Code: ” + infor.getCode());
System.out.println(“Save Title: ” + infor.getTitle());
return true;
}
}

Lớp này có một phương thức saveInfor() tham số của phương thức này là một đối tượng Infor

– Action:
Tạo lớp SaveInfor.java

package java.exam;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.config.ParentPackage;

@ParentPackage(“infor”)
public class SaveInfor extends ActionSupport{
private Infor infor;

/**
* @return the infor
*/
public Infor getInfor() {
return infor;
}

/**
* @param infor the infor to set
*/
public void setInfor(Infor infor) {
this.infor = infor;
}

public String execute() throws Exception {
Processor processor = new Processor();
if(processor.saveInfor(getInfor()))
return SUCCESS;
else
return ERROR;
}
}

Trong lớp này ngoài việc khai báo com.opensymphony.xwork2.ActionSupport ta còn khai báo lớp org.apache.struts2.config.ParentPackage lớp này rất quan trọng, nó cho phép chúng ta sử dụng câu lệnh @ParentPackage(“infor”), câu lệnh này cho phép Action tham chiếu đến các control trong trang JSP ở tầng View.

Lưu ý:
– Từ “infor” trong câu lệnh @ParentPackage(“infor”) phải trùng với tên của thuộc tính “private Infor infor” trong lớp SaveInfor.
– Khi gửi yêu cầu đến server, các tham số có tên dạng “infor.[properties]” sẽ được dùng để khởi tạo nên đối tượng infor trong lớp Action SaveInfor

– Control:

Cấu hình file struts.xml

<action name=”show”>
<result>/pages/saveinfor.jsp</result>
</action>
<action name=”save” class=”java.exam.SaveInfor”>
<result name=”input”>/pages/saveinfor.jsp</result>
<result name=”error”>/pages/ saveinfor.jsp</result>
<result>/pages/savesucess.jsp</result>
</action>

– View:

Tạo trang saveinfor.jsp cho phép người dùng nhập các thông tin

<%@ taglib prefix=”s” uri=”/struts-tags” %>
<html>
<body>
<s:form action=”save” method=”POST”>
<tr>
<td colspan=”2″>Input infor</td>
</tr>
<tr>
<td colspan=”2″>
<s:actionerror />
<s:fielderror />
</td>
</tr>
<s:textfield name=”infor.title” label=”Title”/>
<s:password name=”infor.code” label=”Code”/>
<s:submit value=”OK” align=”center”/>
</s:form>
</body>
</html>

Ta lưu ý tên của các control trong file JSP này

<s:textfield name=”[COLOR=crimson]infor.title[/COLOR]” label=”Title”/>
<s:password name=”[COLOR=crimson]infor.code[/COLOR]” label=”Code”/>

– Phần đầu là “infor”, trùng với câu lệnh @ParentPackage(“infor”) và tên thuộc tính infor trong lớp action SaveInfor

– Phần thứ 2 là tên các thuộc tính của lớp Infor: title và code

Tạo trang savesuccess.jsp để thông báo thành công

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

 
%d bloggers like this: