VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

Struts2 Tuts

MVC là gì? Struts2 là gì? Struts2 - Kiến trúc Struts2 - Thiết lập môi trường Struts2 - Hello World Struts2 - Cấu hình

Struts2 Các Ví Dụ

Ví dụ login trong struts2 Truyền list từ jsp tới action trong struts2
1 / 3
❮ ❯

Truyền list từ JSP tới action trong Struts2


Ví dụ login trong Struts2
Học Spring Framework

Trong công nghệ web mvc nói chung và trong công nghệ struts2 nói riêng, việc truyền data từ từ view (jsp) đến controller (action) và ngược lại là một việc khá quan trọng để thu thập dữ liệu từ người dụng và hiển thị dữ liệu đến người sử dụng. Trong bài này viettuts.vn giới thiệu đến bạn đọc cách truyền list từ JSP tới action trong Struts2 và ngược lại. Và một vài kỹ thuật liên quan trong Struts2 ví dụ như wildcard method selection (ký tự đại diện cho phương thức).

Nội dung chính

  • Các công nghệ sử dụng trong ví dụ này
  • Cấu trúc của project "struts2-example-pass-list"
  • Tạo project truyền list từ JSP tới action trong Struts2
    • Tạo lớp entity Student.java
    • Tạo lớp action StudentAction.java
    • Cấu hình web.xml
    • Tạo file cấu hình struts.xml
    • Tạo trang chủ index.jsp
    • Tạo trang hiển thị list student
  • Run project
  • Download Source Code

Các công nghệ sử dụng trong ví dụ này

  • eclipse mar2
  • apache-tomcat-7.0.75
  • struts-2.3.3
  • jdk 1.8
  • Maven 3.5

Cấu trúc của project "struts2-example-pass-list"

Truyền list từ JSP tới action trong Struts2

Tạo project truyền list từ JSP tới action trong Struts2

Dưới đây là một ví dụ về truyền list từ JSP tới action trong Struts2. Nội dung của ví dụ này là khởi tạo một list student từ action (StudentAction.java), sau đó hiển thị danh sách ra màn hình dưới dạng bảng. Mỗi row có một checkbox bạn có thể check vào đó để xóa student tương ứng (truyền list đó ngược lại action để xử lý). Dưới đây là các bước tạo project.

Tạo lớp entity Student.java

Đừng quên việc tạo các constructor mặc định khi bạn tạo constructor khác mặc định, và các phương thức getter & setter nhé. Bạn có thể xem thêm về constructor trong java

File: Student.java

package vn.viettuts.entity;

public class Student {
    private int id;
    private String name;
    private String sex;
    private String email;
    private String phone;
    private String address;
    private boolean delFlag;

    public Student() {
    }
    
    public Student(int id, String name, String sex, String email, String phone, 
            String address, boolean delFlag) {
        super();
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.email = email;
        this.phone = phone;
        this.address = address;
        this.delFlag = delFlag;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public boolean isDelFlag() {
        return delFlag;
    }
    public void setDelFlag(boolean delFlag) {
        this.delFlag = delFlag;
    }
}

Tạo lớp action StudentAction.java

File: StudentAction.java

package vn.viettuts.action;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

import vn.viettuts.entity.Student;

public class StudentAction extends ActionSupport {
    private List<Student> listStudents;

    /**
     * init and show listStudents to View
     * 
     * @author viettuts.vn
     * @return SUCCESS
     */
    public String init() {
        // init listStudents
        listStudents = new ArrayList<Student>();
        listStudents.add(new Student(1, "Vinh", "Male", "vinh@gmail.com", 
                "0981231234", "Ha Noi", false));
        listStudents.add(new Student(2, "Hoa", "Female", "hoa@gmail.com", 
                "0981241234", "Ha Noi", false));
        listStudents.add(new Student(3, "Phu", "Male", "phu@gmail.com", 
                "0981258888", "Ha Noi", false));
        listStudents.add(new Student(4, "Quy", "Male", "quy@gmail.com", 
                "0981268888", "Ha Noi", false));
        listStudents.add(new Student(5, "Phong", "Male", "phong@gmail.com", 
                "0981278888", "Ha Noi", false));
        return SUCCESS;
    }
    
    /**
     * delete student action
     * 
     * @author viettuts.vn
     * @return SUCCESS
     */
    public String delete() {
        // delete student has delFlag = true
        int size = listStudents.size();
        if (listStudents != null && size > 0) {
            for (int i = 0 ; i < size; i++) {
                if (listStudents.get(i) != null 
                        && listStudents.get(i).isDelFlag()) {
                    listStudents.remove(i);
                    size = listStudents.size();
                }
            }
        }
        return SUCCESS;
    }
    
    // getter and setter
    public List<Student> getListStudents() {
        return listStudents;
    }
    
    public void setListStudents(List<Student> listStudents) {
        this.listStudents = listStudents;
    }
}

Cấu hình web.xml

File web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
id="WebApp_ID" version="3.1">
  <display-name>struts2-example</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
    <!-- STRUTS2 DEFINITION -->
   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
   </filter>
   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

Tạo file cấu hình struts.xml

Như đã nhắc đến trong phần giới thiệu về wildcard method selecton trong struts2, trong bài này viettuts.vn sử dụng nó vì có mục đích nhất định. Như bạn đã biết wildcard method selecton là việc sử dụng ký tự đại diện cho phương thức (dấu *). Trong file cấu hình dưới đây khi khai báo thẻ action, thuộc tính name được khai báo có chứa ký tự đại diện (*) và thuộc tính method="{1}". Về hoạt đông của nó như sau, ví dụ khi bạn gọi action student_init thì phương thức init của lớp StudentAction.java được gọi để xác định kết quả của action đó, tương tự như vậy, khi bạn gọi action student_delete thì phương thức delete của lớp StudentAction.java được gọi...

File: struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
   "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.devMode" value="true" />
    <package name="default" namespace="/" extends="struts-default">
        <action name="student_*" class="vn.viettuts.action.StudentAction" 
                method="{1}">
            <result name="success">/listStudent.jsp</result>
            <result name="error">/index.jsp</result>
        </action>
    </package>
</struts>

Tạo trang chủ index.jsp

File: index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts2 - Example</title>
</head>
<body>
  <a href="/struts2-example-pass-list/student_init"> Show List Student </a>
</body>
</html>

Tạo trang hiển thị list student

File: listStudent.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts2 - Example</title>
<style type="text/css">
.error-msg {
  color: red;
}

table.list {
  border: 1px solid #cbcbcb;
  border-collapse: collapse;
}

table.list td, th {
  border-left: 1px solid #cbcbcb;
  padding-left: 10px;
  padding-right: 10px;
}

table.list thead {
  background-color: #cbcbcb;
}
</style>
</head>
<body>
  <s:form id="studentForm" class="studentForm" theme="simple">
    <div class="error-msg">
      <s:actionerror />
    </div>
    <table class="list">
      <thead>
        <tr>
          <th>ID</th>
          <th>Name</th>
          <th>Sex</th>
          <th>Email</th>
          <th>Phone</th>
          <th>Address</th>
          <th>Delete</th>
        </tr>
      </thead>
      <!-- show list student -->
      <tbody>
        <s:iterator value="listStudents" id="student" status="st">
          <tr>
            <td><s:property value="#student.id" /></td>
            <td><s:property value="#student.name" /></td>
            <td><s:property value="#student.sex" /></td>
            <td><s:property value="#student.email" /></td>
            <td><s:property value="#student.phone" /></td>
            <td><s:property value="#student.address" /></td>
            <td><s:checkbox name="listStudents[%{#st.index}].delFlag" 
               value="%{listStudents[#st.index].delFlag}" /></td>
            <!-- save listStudents -->
            <s:hidden name="listStudents[%{#st.index}].id" 
                      value="%{#student.id}" />
            <s:hidden name="listStudents[%{#st.index}].name" 
                      value="%{#student.name}" />
            <s:hidden name="listStudents[%{#st.index}].sex" 
                      value="%{#student.sex}" />
            <s:hidden name="listStudents[%{#st.index}].email" 
                      value="%{#student.email}" />
            <s:hidden name="listStudents[%{#st.index}].phone" 
                      value="%{#student.phone}" />
            <s:hidden name="listStudents[%{#st.index}].address" 
                      value="%{#student.address}" />
          </tr>
        </s:iterator>
      </tbody>
    </table>
    <div class="control-btn">
      <s:submit name="delete" value="Delete" 
                onclick="this.form.action='student_delete'" />
    </div>
  </s:form>
</body>
</html>

Run project

Hiển thị trang index:

Truyền list từ JSP tới action trong Struts2

Màn hình hiển thì ban đầu của list student:

Truyền list từ JSP tới action trong Struts2

Chọn student để thực hiện xóa:

Truyền list từ JSP tới action trong Struts2

Truyền list student từ jsp tới action và xóa đi student đã chọn, sau đó hiện thị lại list:

Truyền list từ JSP tới action trong Struts2

Chúc các bạn thành công!


Download Source Code

Download source code + thư viện:

Download Now!

Ví dụ login trong Struts2
Học Spring Framework

Recent Updates

Struts2 là gì?Cấu hình Struts2Kiến trúc Struts2Struts2 - Hello WorldThiết lập môi trường cho Struts2Truyền list từ JSP tới action trong Struts2Ví dụ login trong Struts2Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?LinkedList trong javaArrayList trong javaBài tập java có lời giảiXử lý duplicate trong SQLPhím tắt hay dùng trong ExcelBảo mật tập tin ExcelDịch trang tính trong ExcelIn trang tính trong ExcelSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml