04 April 2017

Struts 2 Framework: Test Tạo Web Struts quản lý và hiển thị Random danh sách 16 Đội bóng Chia làm 4 bảng

===============================================
|=================Cấu trúc của Project===============|
===============================================
sqljdbc41.jar là gì? Đó chính là thư viện  JDBC làm việc với Database. Tải trên mạng!
Apache Tomcat   JRE - > Chú ý tới phiên bản
struts2.5.1 là gì? là nhóm thư viện chúng ta tự tạo tự đặt tên cho nó
và đưa tất cả các file jar hỗ trợ struts vào đây. 
Để tải các file này vui lòng Download

Deployment Asembly để chương trình có thể chạy
Đây là điều quan trọng
Sử dụng java Ver 1.7 và Dynamic 3.0
Cách tạo Lybrary
Add tất cả file liên quan hỗ trợ Struts
Giải nén và Import Project này vào máy thực hiện một số cấu hình như phía trên trên
Query.sql
Java Web 2017
CREATE Database MyDatabase
GO
USE MyDatabase
GO
CREATE Table TeamsManagement
(
 Id int identity(1,1) primary key not null,
 Team varchar(200) not null,
 Coach varchar(200),
 [National] varchar(200)
)
ConnectionFactory.java
Java Web 2017
package com.demo.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
 //static reference to itself
    private static ConnectionFactory instance = 
                new ConnectionFactory();
    String url = "jdbc:sqlserver://localhost:1433;databaseName=MyDatabase";
    String user = "sa";
    String password = "12345678";
    String driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
     
    //private constructor
    private ConnectionFactory() {
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
     
    public static ConnectionFactory getInstance()   {
        return instance;
    }
     
    public Connection getConnection() throws SQLException, 
    ClassNotFoundException {
        Connection connection = 
            DriverManager.getConnection(url, user, password);
        return connection;
    }   
}
Nếu cầu hình thành công chương trình sẽ như hình dưới đây
Đầu tiên tìm hiểu về cách thức hoạt đọng của Tiles tái sử dụng code
Đầu tiên trên ứng dụng người dùng Click Teams Managerment
Theo lời gọi đó struts.xml sẽ lắng nghe và đưa giải pháp tới địa chỉ tiếp theo teamsmanagerment.def đây là tên tự đặt và sử dụng type="tiles" nếu thiếu đoạn code này chương trình sẽ báo lỗi 
tiles.xml thực hiện hành vi di chuyển tới trang /teamsManagerment.jsp chú ý cần có dấu gạch nghiêng
Đây chính là kết quả đưa ra màn hiển thị
Tiếp theo tạo mới một đội bóng và click button Save Team
Khi nhấn nút Save Team 
Nhận lời gọi từ Form jsp đưa dữ liệu vào class TeamsManagermentAction.java
struts.xml
Java Web 2017
<?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" extends="struts-default">

        <result-types>
            <result-type name="tiles"
                                     class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>
        <!-- DEFAULT -->
        <action name="">
            <result type="tiles">welcome.def</result>
        </action>
        <!-- MENU MANAGEMENT -->
        <action name="TM">
            <result type="tiles">teamsmanagement.def</result>
        </action>
        <!-- MENU INFORMATION -->
        <action name="GI" class="com.demo.controller.GroupInformationAction">
            <result name="success" type="tiles">groupinformation.def</result>
            <result name="error" type="tiles">error.def</result>
        </action>
        <!-- CREATE NEW TEAM -->
        <action name="saveTeam" class="com.demo.controller.TeamsManagementAction">
            <result name="success" type="tiles">groupinformation.def</result>
            <result name="error" type="tiles">teamsmanagement.def</result>
        </action>
        <!-- UPDATE BY TEAM ID -->
        <action name="Edit" class="com.demo.controller.EditTeamsManagementAction">
            <result name="success" type="tiles">edit.def</result>
            <result name="error" type="tiles">error.def</result>
        </action>
        <!-- DELETE BY TEAM ID -->
        <action name="Delete" class="com.demo.controller.DeleteTeamsManagementAction">
            <result name="success" type="tiles">delete.def</result>
            <result name="error" type="tiles">error.def</result>
        </action>
        <!-- EDIT TEAM FROM BY ID-->
        <action name="editTeamFrom" class="com.demo.controller.EditTeamsManagementAction"
                        method="editTeamFrom">
            <result name="success" type="tiles">deleteform.def</result>
            <result name="error" type="tiles">error.def</result>
        </action>
        <!-- MAKE GROUP -->
        <action name="makeGroup" class="com.demo.controller.MakeGroupAction">
            <result name="success" type="tiles">makeGroup.def</result>
            <result name="error" type="tiles">makeGroup.def</result>
        </action>

    </package>
</struts>
Class TeamsManagementAction.java đóng vai trò phải return success hoặc error do ta tự đặt cài bẫy
struts.xml gọi tới teamsmanagement.def và đưa list tới trang
teamsManagement.jsp
tiles.xml
Java Web 2017
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
    "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

<tiles-definitions>

    <definition name="baseLayout" template="/baseLayout.jsp">
        <put-attribute name="title" value="Tiles Sample" />
        <put-attribute name="header" value="/header.jsp" />
        <put-attribute name="menu" value="/menuleft.jsp" />
        <put-attribute name="body" value="/body.jsp" />
        <put-attribute name="footer" value="/footer.jsp" />
    </definition>
    <!-- welcome.def -->
    <definition name="welcome.def" extends="baseLayout">
        <put-attribute name="title" value="Welcome" />
        <put-attribute name="body" value="/welcome.jsp" />
    </definition>
    <!-- teamsmanagement.def -->
    <definition name="teamsmanagement.def" extends="baseLayout">
        <put-attribute name="title" value="Teams Managerment" />
        <put-attribute name="body" value="/teamsManagement.jsp" />
    </definition>
    <!-- groupinformation.def -->
    <definition name="groupinformation.def" extends="baseLayout">
        <put-attribute name="body" value="/groupInformation.jsp" />
    </definition>
    <!-- makegroup.def -->
    <definition name="makegroup.def" extends="baseLayout">
        <put-attribute name="body" value="/groupInformation.jsp" />
    </definition>
    <!-- edit.def -->
    <definition name="edit.def" extends="baseLayout">
        <put-attribute name="body" value="/editTeam.jsp" />
    </definition>
    <!-- delete.def -->
    <definition name="delete.def" extends="baseLayout">
        <put-attribute name="body" value="/groupInformation.jsp" />
    </definition>
    <!-- deleteform.def -->
    <definition name="deleteform.def" extends="baseLayout">
        <put-attribute name="body" value="/groupInformation.jsp" />
    </definition>
    <!-- makeGroup.def -->
    <definition name="makeGroup.def" extends="baseLayout">
        <put-attribute name="body" value="/groupInformation.jsp" />
    </definition>
    <!-- error.def -->
    <definition name="error.def" extends="baseLayout">
        <put-attribute name="body" value="/error.jsp" />
    </definition>
</tiles-definitions>
Để hiển thị thông tin đội bóng vừa nhập! ở đây ta sử dụng vòng lặp <s:iterator> được struts hỗ trợ
Khi đủ 16 đội bấm nút Make Group hiển thị danh sách chia theo bảng đấu Random và không cần lưu vào Database
Để hiển thị bảng A,B,C,D khi bấm nút Make Group
groupInformation.jsp
Java Web 2017
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<!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">
        <link rel="stylesheet" type="text/css" href="css/theme.css">
        <script src="js/dialog-delete.js"></script>
        <title>Group Information</title>
    </head>
    <body>
        <h3 align="center">Group Information</h3>
        <table id="table_makeGroup">
            <tr>
                <th>No</th>
                <th>Team</th>
                <th>Coach</th>
                <th>National</th>
                <th></th>
            </tr>
            <s:iterator var="L" value="list" status="num">
                <tr>
                    <td><s:property value="#num.count" /></td>
                <td><s:property value="#L.team" /></td>
                <td><s:property value="#L.coach" /></td>
                <td><s:property value="#L.national" /></td>
                <td>
                    <center>
                        <a href="Edit?Id=<s:property value="#L.id"/>" class="a_makeGroup">Edit</a>
                        | <a href="Delete?Id=<s:property value="#L.id"/>"
                        class="a_makeGroup" onclick="return ConfirmDelete()">Delete</a>
                    </center>
                </td>
                </tr>
            </s:iterator>

        </table>
        <div id="btn_makeGroup">
            <a href="makeGroup"><input type="button" value="Make Group" /></a>
        </div>
        <!-- Thong bao error khong tao duoc bang makeGroup phai du 16 doi -->
    <s:if test="#request.errorMakeGroup != null">
        <hr><center><font color="red" ><s:property value="#request.errorMakeGroup" /></font></center><hr/>
    </s:if>
    <!-- Hien thi danh sach makeGroup -->
    <s:if test="listMakeGroup != null">

        <s:if test="listMakeGroup.size()  == 16">
            <div id="body_makeGroup">
                <div id="content_makeGroup">
                    A: <br /><!-- Danh sach A -->
                    <s:iterator var="L" value="listMakeGroup" begin="0" end="3"
                                status="num">
                        <s:property value="#num.count" />. 
                        <s:property value="#L.team" />
                        <br />
                    </s:iterator>
                </div>
                <div id="content_makeGroup">
                    B: <br /><!-- Danh sach B -->
                    <s:iterator var="L" value="listMakeGroup" begin="4" end="7"
                                status="num">
                        <s:property value="#num.count" />. 
                        <s:property value="#L.team" />
                        <br />
                    </s:iterator>
                </div>
                <div id="content_makeGroup">
                    C: <br /><!-- Danh sach C -->
                    <s:iterator var="L" value="listMakeGroup" begin="8" end="11"
                                status="num">
                        <s:property value="#num.count" />. 
                        <s:property value="#L.team" />
                        <br />
                    </s:iterator>
                </div>
                <div id="content_makeGroup">
                    D: <br /><!-- Danh sach D -->
                    <s:iterator var="L" value="listMakeGroup" begin="12" end="15"
                                status="num">
                        <s:property value="#num.count" />. 
                        <s:property value="#L.team" />
                        <br />
                    </s:iterator>
                </div>
            </div>
        </s:if>

    </s:if>
</body>
</html>
TeamsManagementAction.java
 teamsManagement.jsp
Xóa đi một đội bóng
Màn hình hiển thị Alert thông báo có chấp nhận? hay không
Nếu danh sách đội bóng chưa đủ 16 đội thì hiển thị thông báo
MakeGroupAction.java

groupInformation.jsp 
Do thời gian giới hạn nên bài này xin tạm dừng tại đây!

0 nhận xét:

Post a Comment

 

BACK TO TOP

Xuống cuối trang