1. Trang chủ
  2. » Công Nghệ Thông Tin

Thực hành Strust JSF Lab 2

21 199 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 1,08 MB
File đính kèm Setup.rar (1 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

IT Research Department @BKAP 2015 Page 5 / 21 Code thực hiện nghiệp vụ cho DisplayAction.java public class DisplayAction extends ActionSupport { //Khai bao hung du lieu userName tren

Trang 1

IT Research Department @BKAP 2015 Page 1 / 21

Lab 02 Working with Struts 2 Framework Mục tiêu

- Hiểu rõ kiến trúc, thành phần, vòng đời của Struts 2 Framework

- Nắm vững luồng dữ liệu đi trong Struts 2 Framework

- Tạo ứng dụng đơn giản với Struts 2 Framework

- Thao tác Struts 2 Framework với Database

Phần I Bài tập step by step

Bài 2.1 Import các Plugins để sử dụng Struts 2 Framework:

- org-netbeans-modules-framework-xwork.nbm

- org-netbeans-modules-web-frameworks-struts2.nbm

- org-netbeans-modules-web-frameworks-struts2lib-v2_3_15.nbm

Tạo project với Struts 2 Framework trên Netbeans

- Nhập vào tên người dùng

- Hiển thị: “Xin chào người dùng”

Step 1: Tạo project mới trong Netbeans giống như bài lab01

 Project Name: Lab02

 Server: GlassFish Server

 Frameworks: Struts 2

Trang 2

 Trong đó:

 1: Chọn Framework Struts 2

 3: Finish

 Cấu trúc ứng dụng sau khi hoàn thành

Step 2: Tạo trang các trang view jsp

 input.jsp chứa textbox nhập vào tên người dùng

Trang 3

IT Research Department @BKAP 2015 Page 3 / 21

<%@page contentType="text/html" pageEncoding="UTF-8"%>

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

< s:form action="Display">

< s:textfield label="User Name" name="userName"></s:textfield>

< s:submit value="Submit"/>

</ s:form>

</body>

</html>

 output.jsp hiển thị “Xin chào người dùng”

<%@page contentType="text/html" pageEncoding="UTF-8"%>

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

Step 3: Tạo Action hứng dữ liệu trên form input.jsp và thực hiện nghiệp vụ xử lý dữ liệu và

trả ra kết quả cho struts.xml

 Lab02  Source Packages  New  Other  Struts 2  ActionSupport based Action

Trang 4

 Trong đó

 1: Tên Action

 2: Package chứa Action

 3: Finish

Trang 5

IT Research Department @BKAP 2015 Page 5 / 21

 Code thực hiện nghiệp vụ cho DisplayAction.java

public class DisplayAction extends ActionSupport {

//Khai bao hung du lieu userName tren form input.jsp

private String userName;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

 Struts 2 tự động nhận giá trị và chuyển đổi kiểu dữ liệu từ view xuống action

 Ví dụ trên trang input.jsp ta có khai báo 1 textbox có name là userName, ở action ta

có 1 thuộc tính cũng là userName Struts 2 sẽ tự động nhận và chuyển đổi kiểu dữ liệu của giá trị nhập vào textbox userName trên input.jsp xuống thuộc tính

userName trên action

Trang 6

Step 4: Cấu hình file struts.xml

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<! Configuration for the default package >

<package name="default" extends="struts-default">

<action name="Display" class="action.DisplayAction">

<result name="success">output.jsp</result>

</action>

</package>

</struts>

 Các thuộc tính cấu hình trong file struts.xml

 Thẻ action: Chứa các thông tin về action

 Name: Tên Action thực hiện (Có phân biệt hoa thường)

 Class: Đường dẫn lớp action

 Method: Phương thức action sẽ thực hiện (Bài 2.2 sẽ thực hiện)

 Thẻ Result: Điều hướng chuyển trang dựa trên kết quả trả về từ action

 Name: giá trị String trả về từ action

Step 5: Cấu hình web.xml

Trang 7

IT Research Department @BKAP 2015 Page 7 / 21

Trang 8

 GetAllCatalog

 InsertCatalog

 UpdateCatalog

Trang 9

IT Research Department @BKAP 2015 Page 9 / 21

executeResult=”true” trong thẻ action

<%@page contentType="text/html" pageEncoding="UTF-8"%>

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

Trang 10

 listCatalog.jsp: file hiển thị danh sách các loại sản phẩm sau khi thực hiện lấy tất cả

dữ liệu loại sản phẩm từ Database về File này sẽ được đưa vào phần body của file index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>

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

<td><s:property value="catalogId"/></td>

<td><s:property value="catalogName"/></td>

<td><s:property value="description"/></td>

<td><a href="initUpdate?catalogId=<s:property value="catalogId"/>">Update</a>

<a href="initDelete?catalogId=<s:property value="catalogId"/>">Delete</a></td>

</tr>

</ s:iterator>

</tbody>

</table>

<h3><a href="insertCatalog.jsp"> Add </a></h3>

Lưu ý : thẻ <a href= "initUpdate?catalogId= < s:property value = "catalogId" /> " >

Update </a> sẽ set vào request một parameter có tên là catalogId có giá trị là

<s:property value=”catalogId”/> và khi click vào link Update nó sẽ gọi action

initUpdate được khai báo trong struts.xml Trong lớp action ta sẽ lấy parameter này bằng cách get từ HttpServletRequest được implement từ interface

ServletRequestAware (Sẽ trình bày thêm bên dưới)

 insertCatalog.jsp: file jsp chứa form nhập dữ liệu thông tin đối tượng catalog

<%@page contentType="text/html" pageEncoding="UTF-8"%>

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

< s:form action="InsertCatalog">

< s:textfield label="Catalog Name" name="insertCatalog.catalogName"/>

Trang 11

IT Research Department @BKAP 2015 Page 11 / 21

< s:textarea label="Description" name="insertCatalog.description"/>

< s:submit value="Insert"/>

</ s:form>

</body>

</html>

 updateCatalog.jsp: file jsp chứa form cập nhật thông tin đối tượng catalog

<%@page contentType="text/html" pageEncoding="UTF-8"%>

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

< s:form action="UpdateCatalog">

< s:textfield label="Catalog ID" name="updateCatalog.catalogId" value="%{initCatalog.catalogId}"

readonly="true"/>

< s:textfield label="Catalog Name" name="updateCatalog.catalogName"

value="%{initCatalog.catalogName}"/>

< s:textarea label="Description" name="updateCatalog.description" value="%{initCatalog.description}"/>

< s:submit value="Update"/>

 error.jsp: file jsp thông báo lỗi trong quá trình xử lý

<%@page contentType="text/html" pageEncoding="UTF-8"%>

Trang 12

 Lab02_CRUD  Source Packages  RC  New  Other  Java  Java Class

 Đặt tên ConnectionDB và nằm trong package util

public class ConnectionDB {

private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=Struts2DB";

private static final String DB_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

private static final String user_db = "sa";

private static final String pass_db = "Gacon1984";

public static Connection getDBConnection() {

Connection conn = null;

conn = DriverManager.getConnection( URL, user_db, pass_db);

} catch (SQLException ex) {

ex.printStackTrace();

}

return conn;

}

Step 6: Tạo đối tượng Catalog (Lớp catalog.java)

 Lab02_CRUD  Source Packages  RC  New  Other  Java  Java Class

 Đặt tên catalog và nằm trong package entities

public class Catalog {

private int catalogId;

private String catalogName;

private String description;

public int getCatalogId() {

return catalogId;

}

Trang 13

IT Research Department @BKAP 2015 Page 13 / 21

public void setCatalogId(int catalogId) {

this.catalogId = catalogId;

}

public String getCatalogName() {

return catalogName;

}

public void setCatalogName(String catalogName) {

this.catalogName = catalogName;

}

public String getDescription() {

return description;

}

public void setDescription(String description) {

this.description = description;

}

}

Step 7: Tạo lớp action Struts2

 Lab02_CRUD  Source Packages  RC  New  Other  Struts2  ActionSupport based Action

 Đặt tên CatalogAction trong package bkap.action

package bkap.action;

import static com.opensymphony.xwork2.Action.ERROR;

import static com.opensymphony.xwork2.Action.SUCCESS;

Trang 14

//Khai bao doi tuong catalog chua du lieu loai san pham insert

private Catalog insertCatalog;

//Khai bao doi tuong catalog chua du lieu loai san pham lay ra tren danh sach de update

private Catalog initCatalog;

//Khai bao doi tuong catalog chua du lieu loai san pham update

private Catalog updateCatalog;

//Khai bao danh sach doi tuong loai san pham chua du lieu khi lay tu database ve

private List<Catalog> listCatalog;

//Khai bao request trong khi xu ly cac yeu cau

private HttpServletRequest request;

//Khoi tao cac doi tuong

public CatalogAction() {

insertCatalog = new Catalog();

initCatalog = new Catalog();

updateCatalog = new Catalog();

listCatalog = new ArrayList<>();

}

public Catalog getInsertCatalog() {

return insertCatalog;

}

//Getter and setter cac thuoc tinh

public void setInsertCatalog(Catalog insertCatalog) {

this.insertCatalog = insertCatalog;

}

public Catalog getInitCatalog() {

return initCatalog;

}

public void setInitCatalog(Catalog initCatalog) {

this.initCatalog = initCatalog;

}

public Catalog getUpdateCatalog() {

return updateCatalog;

}

public void setUpdateCatalog(Catalog updateCatalog) {

this.updateCatalog = updateCatalog;

}

public List<Catalog> getListCatalog() {

return listCatalog;

}

public void setListCatalog(List<Catalog> listCatalog) {

this.listCatalog = listCatalog;

}

public HttpServletRequest getRequest() {

return request;

}

Trang 15

IT Research Department @BKAP 2015 Page 15 / 21

public void setRequest(HttpServletRequest request) {

this.request = request;

Connection conn = null;

CallableStatement callableStatement = null;

try {

//Tao Connection

conn = ConnectionDB.getDBConnection();

//Goi Procedure

callableStatement = conn.prepareCall("{call GetAllCatalog()}");

//Lay du lieu ve ResultSet

ResultSet rs = callableStatement.executeQuery();

while (rs.next()) {

//Day du lieu vao listCatalog

Catalog catalog = new Catalog();

} catch (SQLException ex) {

Logger.getLogger(CatalogAction.class.getName()).log(Level SEVERE, null, ex);

public String insertCatalog() {

Connection conn = null;

CallableStatement callableStatement = null;

try {

//Tao connection voi Database

conn = ConnectionDB.getDBConnection();

//Set cac gia tri dau vao cua procedure

callableStatement = conn.prepareCall("{call InsertCatalog(?,?)}");

callableStatement.setString(1, this.insertCatalog.getCatalogName());

callableStatement.setString(2, this.insertCatalog.getDescription());

Trang 16

//Thuc thi Insert Catalog vao database

} catch (SQLException ex) {

Logger.getLogger(CatalogAction.class.getName()).log(Level SEVERE, null, ex);

//Lay doi tuong can update

public String initUpdate() {

//Lay Catalog ID cua loai san pham can update

int catalogId = Integer.parseInt(request.getParameter("catalogId"));

//Lay Catalog theo CatalogId tu Database

//Connect Database

Connection conn = null;

CallableStatement callableStatement = null;

try {

//Tao Connection

conn = ConnectionDB.getDBConnection();

//Goi Procedure

callableStatement = conn.prepareCall("{call GetCatalogById(?)}");

//Set cac gia tri dau vao cua procedure

callableStatement.setInt(1, catalogId);

//Lay du lieu ve ResultSet

ResultSet rs = callableStatement.executeQuery();

while (rs.next()) {

//Day du lieu vao initCatalog

initCatalog.setCatalogId(rs.getInt("CatalogId"));

initCatalog.setCatalogName(rs.getString("CatalogName"));

initCatalog.setDescription(rs.getString("Description"));

} catch (SQLException ex) {

Logger.getLogger(CatalogAction.class.getName()).log(Level SEVERE, null, ex);

Trang 17

IT Research Department @BKAP 2015 Page 17 / 21

Connection conn = null;

CallableStatement callableStatement = null;

try {

//Tao connection voi Database

conn = ConnectionDB.getDBConnection();

//Set cac gia tri dau vao cua procedure

callableStatement = conn.prepareCall("{call UpdateCatalog(?,?,?)}");

callableStatement.setInt(1, this.updateCatalog.getCatalogId());

callableStatement.setString(2, this.updateCatalog.getCatalogName());

callableStatement.setString(3, this.updateCatalog.getDescription());

//Thuc thi Update Catalog vao database

} catch (SQLException ex) {

Logger.getLogger(CatalogAction.class.getName()).log(Level SEVERE, null, ex);

public String deleteCatalog() {

//Lay Catalog ID cua loai san pham can delete

int catalogId = Integer.parseInt(request.getParameter("catalogId"));

//Connect Database

Connection conn = null;

CallableStatement callableStatement = null;

try {

//Tao connection voi Database

conn = ConnectionDB.getDBConnection();

//Set cac gia tri dau vao cua procedure

callableStatement = conn.prepareCall("{call DeleteCatalog(?)}");

} catch (SQLException ex) {

Logger.getLogger(CatalogAction.class.getName()).log(Level SEVERE, null, ex);

Trang 18

}

 Lưu ý:

request

ServletRequestAware

Step 8: Cấu hình file struts.xml

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<! Configuration for the default package >

<package name="default" extends="struts-default">

<action name="GetAllCatalog" class="bkap.action.CatalogAction" method="getAllCatalog">

<result name="success">listCatalog.jsp</result>

<result name="error">error.jsp</result>

</action>

<action name="InsertCatalog" class="bkap.action.CatalogAction" method="insertCatalog">

<result name="success" type="redirect">index.jsp</result>

<result name="error">error.jsp</result>

</action>

<action name="initUpdate" class="bkap.action.CatalogAction" method="initUpdate">

<result name="success">updateCatalog.jsp</result>

<result name="error">error.jsp</result>

</action>

<action name="UpdateCatalog" class="bkap.action.CatalogAction" method="updateCatalog">

<result name="success" type="redirect">index.jsp</result>

<result name="error">error.jsp</result>

</action>

<action name="initDelete" class="bkap.action.CatalogAction" method="deleteCatalog">

<result name="success" type="redirect">index.jsp</result>

<result name="error">error.jsp</result>

</action>

</package>

</struts>

Ngày đăng: 07/05/2018, 16:01

TỪ KHÓA LIÊN QUAN

w