Thứ Tư, 17 tháng 8, 2016

Khái niệm về Dispatch Action trong Struts Framework – xây dựng ứng mô phỏng cơ chế làm việc của trạm rút tiền ATM áp dụng Dispatch Action trong Struts Framework

Khái niệm về Dispatch Action trong Struts Framework – xây dựng ứng mô phỏng cơ chế làm việc của trạm rút tiền ATM áp dụng Dispatch Action trong Struts Framework

Mục đích: Chủ đề của bài này đề cập đến khái niệm về Dispatch Action của Struts 1.x Framework. Chúng tôi sẽ tiếp cận tổng quát khái niệm Dispatch Action dựa trên kiến thức Struts Framework đã biết rồi về Action, ForwardAction, IncludeAction thông thường. Dựa trên khái niệm này, chúng ta sẽ áp dụng Dispatch Action này trong phần phân tích và thiết kế ứng dụng mô phỏng phần rút tiền của máy ATM để biến thành dịch vụ trực tuyến trên web cụ thể để thấy rõ cách thức thiết kế, cách cài đặt ứng dụng cụ thể sử dụng Dispatch Action Struts Framework

Khái niệm về Dispatch Action trong Struts Framework – xây dựng ứng mô phỏng cơ chế làm việc của trạm rút tiền ATM áp dụng Dispatch Action trong Struts Framework

Mục đích: Chủ đề của bài này đề cập đến khái niệm về Dispatch Action của Struts 1.x Framework. Chúng tôi sẽ tiếp cận tổng quát khái niệm Dispatch Action dựa trên kiến thức Struts Framework đã biết rồi về Action, ForwardAction, IncludeAction thông thường. Dựa trên khái niệm này, chúng ta sẽ áp dụng Dispatch Action này trong phần phân tích và thiết kế ứng dụng mô phỏng phần rút tiền của máy ATM để biến thành dịch vụ trực tuyến trên web cụ thể để thấy rõ cách thức thiết kế, cách cài đặt ứng dụng cụ thể sử dụng Dispatch Action Struts Framework

Khái niệm về Dispatch Action trong Struts Framework

  • Trong quá trình xây dựng ứng dụng, chúng ta thấy các chức năng của ứng dụng có cách thức thực hiện tương tự nhau về từng bước thực hiện bên trong nhưng chỉ khác nhau về tham số truyền xử lý linh động từ nhiều nguồn khác nhau nhưng có cùng tính chất
  • Nếu áp dụng các thành phần Action thông thường thì trong phần phương thức execute chúng ta phải áp dụng các mệnh đề chọn lựa như if … else hay switch … case để phân chia từng trường hợp để gọi xử lý. Điều đó có thể dẫn đến cấu trúc của phương thức không rõ ràng và khó trong việc bảo trì (maintain) code khi chúng ta cần chỉnh sửa hay thay đổi chương trình, hay nói cách khác mở rộng chức năng cho chương trình. Một phương thức có chứa quá nhiều thành phần xử lý sẽ che hết tính chất cụ thể hàm làm chức năng cụ thể, nhập nhằng và quan hệ nhiều thành phần và khó tái sử dụng trong các chương trình khác
  • Nhìn khía cạnh khác thì nếu như dùng nhiều Action thì chương trình trở nên quá lớn và rời rạc không nhóm cùng chung tính chất của các chức năng tương tự vào cùng module để dễ dàng quản lý
  • Dispatch Action là một cách thức để nhóm các chức năng tương tự nhau vào trong một Action và chia thành các thành phần phương thức nhỏ đại diện cho từng chức năng trong action nhằm thể hiện rõ cấu trúc rõ ràng và khả năng tái sử dụng lẫn độc lập chức năng lẫn nhau
  • Khi áp dụng Dispatch Action thì tại thời điểm ứng dụng được thực thi, tùy theo hành động từng hành động của người dùng mà dispatch action sẽ xác định cụ thể chức năng cụ thể trong class action tương ứng để chuyển request đến cho chúng xử lý
  • Dispatch Action class không cung cấp phương thức execute như các Action class thông thường khác mà cung cấp phương thức tương ứng với các dạng tên tham số người dùng xác định truyền vào theo dạng chỗ trống (place holder) để khi người dùng thực hiện chức năng thì dispatch sẽ chuyển (delegate) yêu cầu đến chức năng cụ thể đã được vận dụng
  • Cách thức sử dụng
    • Thực hiện tạo ứng dụng có hỗ trợ Struts Framework như bình thường
    • Khi xây dựng action có hỗ trợ Struts Framework Dispatcher thì class bắt buộc phải kế thừa extends org.apache.struts.actions.DispatchAction thay cho org.apache.struts.action.Action
    • Cài đặt các hàm tương tự như execute nhưng thay thế chữ execute bằng các tên hay giá trị tham số sẽ truyền vào trong action. Có thể có hơn một hàm tùy theo giá trị tham số có bao nhiêu giá trị
    • Mapping action trong struts-config.xml và xác định giá trị cho thuộc tính parameter để dispatch action có thể áp dụng và xác định method action cụ thể được kích hoạt trong Dispatch Action
      • Cú pháp của hàm dispatch action có dạng

public ActionForward <trị Tham số> (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception

        • Trong đó ActionForward xác định chuyển xử lý request đến một thành phần trong ứng dụng xử lý tiếp hay xác định response đến người dùng
        • Action Mapping xác định định hướng xuất tùy theo nội dung hiện thực trong Action
        • request và response là cặp đôi của HTTP mà Action đón nhận thông tin xử lý và phản hồi
        • ActionForm xác định form dữ liệu kèm theo để đưa vào execute để lấy dữ liệu trong quá trình xử lý
      • Action trong struts-config phải được mapping trong struts-config.xml theo cú pháp

        <action path="/action" type=“Action class" [name=“form name“ input=“/view input file” [scope=“request/session”] parameter=“par” [validation=“true/ false”]>

     <forward name=“label1" path="/view file“ [redirect=“true/false”]/>

      <forward name=“label2" path="/view file"/>

       …

       <forward name=“labeln" path="/view file"/>

</action>

        • Lưu ý: tên action phải bỏ đi .do

Vận dụng Dispatch Action của Struts Framework vào việc phân tích và cài đặt một ứng dụng cụ thể (ở đây chúng tôi sẽ thực hiện nội dung mô hình mô phỏng máy rút tiền ATM để cho thấy việc phân tích MVC cùng với Dispatch Action có lợi khi xây dụng ứng dụng kết hợp với các action bình thường)

  • Ứng dụng ở đây mô tả việc xây dựng một ứng dụng cung cấp chức năng như sau
    • Ngưởi dùng muốn truy cập vào hệ thống phải thực hiện login để kiểm tra mã số tài khoản và pin có hợp lệ hay không
    • Hệ thống thông qua DB kiểm tra tính xác thực của dữ liệu
      • Nếu mã số tài khoản và pin không chính xác hay không tồn tại ứng dụng thông báo cho người dùng thông tin “Invalid account” và cho người dùng trở về trang Login thông qua một Link có tên là try again
      • Nếu user tồn tại thì chương trình bày trang gồm nhiều chức năng cho phép lựa chọn trực tiếp bằng cách check vào các option button và nhấn nút thực thi như sau
        • Xem số dư
        • Rút tiền
        • Nạp tiền
        • Chuyển khoản
        • Sao kê giao dịch trong vòng 1 tháng
        • In hóa đơn lần giao dịch cuối cùng
      • Đặc biệt, trên đầu trang phải sử dụng session để lưu trữ user và tất cả các trang phải có câu “Welcome, tênUser”
    • Trên trang tổng quát chức năng này, nếu người dùng nhập giá trị vào ô tiền và chọn 1 trong 02 chức năng rút tiền, nạp tiền
      • Chương trình sẽ trừ hay cộng tiền trong thông tin của DB và sẽ in ra hóa đơn
      • Nếu thông tin không hợp lệ thì trang form sẽ thông báo lỗi tương ứng
    • Cũng trên trang khi chọn vào chuyển khoản, trước khi thực thi họ phải nhập thông tin vào ô giá trị số tiền vào tài khoản
      • Nếu số tiền đủ thì trang sẽ chuyển sang trang cho người dùng nhập tài khoản, khi giao dịch thành công thì sẽ chuyển sang in hóa đơn
      • Nếu không được thì trang chuyển qua thông báo lỗi
    • Khi người dùng chọn sao kê giao dịch cuối cùng thì trang sẽ in giao dịch cuối cùng
    • Tất cả thao tác cuối cùng từ thông báo lỗi đến in hóa đơn sẽ chuyển về menu
    • Người dùng phải chọn Log out để thoát khỏi tài khoản của mình hay session sẽ tự động timeout sau khoản thời gian qui định
  • DB chúng tôi thao tác có dạng như sau

  • Yêu cầu
    • Nắm vững các khái niệm và cách thức cài đặt về MVC, Struts Framework 1.x, Validation trong Struts Framework 1.x
    • Nắm vững về ngôn ngữ lập trình Java, lập trình thao tác hướng đối tượng
    • Cách thức sử dụng JSTL, EL, HTML
    • Đã thực hiện qua các bài về Tổng quan về Struts Framework, Sử dụng Struts Framework kết hợp với EJB 3 để hỗ trợ xây dựng ứng dụng Web, Sử dụng Validation trong Struts Framework
    • Tools sử dụng ở đây là Netbeans 6.9.1
    • JDK 6 update 22
    • Server: Tomcat 6.0.26
    • DBMS: SQL Server 2005
    • Thư viện hỗ trợ: JSTL 1.1, Driver kết nối database SQLServer (sqljdbc.jar hay sqljdbc4.jar), các thành phần liên quan đến Struts Framework
  • Các bước thực hiện
    • Tạo Web Application tương tư như Tổng quan về Struts Framework
      • Tên project: StrutsDispatchATM
      • Server: Apache Tomcat 6.0.26
      • J2EE version: 1.4
      • Nhấn Next, tại bước Chọn Frameworks, chọn Struts 1.3.8 và check vào Add Struts TLDs để hỗ trợ đưa các taglib do Struts Framework hỗ trợ khi cài đặt ứng dụng

      • Nhấn Finish, cấu trúc project trên Netbeans cập nhật với các tập tin cấu hình struts-config.xml, taglib tlds và các library như sau

      • Tập tin web.xml được tự động cập nhật mapping với Action Servlet và tập tin struts-config.xml được đưa vào project
    • Chúng ta thực hiện chức năng Login bằng cách xóa 02 tập tin index.jsp và welcomeStruts.jsp. Sau đó, thực hiện tạo tập tin JSP mới tên index.jsp
      • Cập nhật trang index để đón nhận account và pin nhưng action name chúng ta đặt tên phải có đuôi .do vì action được mapping phải có do để phân biệt giữa thành phần struts với nhau (ở đây sẽ là login.do). Ngoài ra, tên control của 02 thành phần đặt sẽ là properties của chúng ta tương ứng trong Action Form để khi kích hoạt action thì các hàm get/set được kích hoạt tương ứng
      • Ngoài ra, vì form có bắt validation, do vậy, chúng ta sẽ áp dụng một số tag lib và bắt lỗi tương tự như bài validation của Struts Framework

      • Tạo thành phần Action Form có tên LoginActionForm để lưu trữ dữ liệu và thực hiện chức năng Login cho form tương ứng ở trên tương tự như Tổng quan về Struts Framework.
        • Tập tin struts-config.xml được cập nhật như sau

        • Chúng ta thực hiện chỉnh sửa trong Action Form như sau (ở đây chúng ta sẽ áp dụng bắt lỗi validation khi người dùng bỏ trống)

          • Thuộc tính là các giá trị lấy từ các control trong trang index.jsp
          • Chỉnh sửa hàm validate để hỗ trợ bắt lỗi trên form
          • Phát sinh get/set của các thuộc tính
          • Bổ sung hàm reset để reset các giá trị
          • Phát sinh hàm checkLogin để thực hiện cung cấp chức năng login cho object này (lưu ý phải add thư viện sqljdbc vào trước). Ở đây, chúng tôi sẽ thực hiện kết nối động thông qua cấu hình tập tin META-INF tương tự như bài Tạo kết nối động đến DB trong mô hình MVC Pattern trên Web Server (Tomcat)
          • Lưu ý: chúng ta cần khai báo thêm thuộc tính fullName để đón nhận giá trị fullName nếu Login thành công. Định nghĩa hàm get/set cho thuộc tính này sau khi khai báo

      • Tạo Action Class tên LoginStrutsStrutsAction để đón nhận xử lý từ Action Servlet và kết xuất kết quả tương tự như như Tổng quan về Struts Framework
      • Nhập tên, chọn package, đặc biệt nhập tên action sau dấu / trong Action Path (ở đây là login). Lưu ý, action lấy trong html form nhưng không có .do.

 

      • Nhấn Next, chọn form tương ứng trong Action Form Bean Name, chọn trang làm form nhập thông qua nút Browse ở Input Resource (ở đây sẽ là index.jsp), chọn Scope tương ứng của form bean (ở đây chúng ta chọn là session để chúng ta có thể trình bày username ở trang khác), chúng ta sẽ validate trong bài này nên để check Validate ActionForm Bean

      • Nhấn nút Finish, Action Class được phát sinh với hàm execute và struts-config.xml được cập nhật

      • Cấu trúc project được cập nhật như sau

      • Chúng ta thực hiện thao tác xử lý bằng cách đón nhận tham số ActionForm ép về kiểu form của chúng ta là LoginActionForm, và gọi hành vi checkLogin, tùy theo kết quả chúng ta sẽ trả về là nhãn fail hay success để mapping đến trang home page  hay trang invalid

      • Chúng ta tạo trang invalid.jsp để trình bày message invalid account and pin

      • Tạo trang menu.jsp với session để trình bày tên full name của user đăng nhập và hiển thị các chức năng như yêu cầu đề bài

        • Lưu ý: với việc lấy fullname chúng ta phải truy cập tầm vực của nó là session, tên attribute chính là tên bean được khai báo ở phần name trong form-bean và thuộc tính tương ứng chúng ta cần lấy thông qua các hàm get trong bean
      • Chúng ta phải thực hiện định nghĩa Action Forward để kết quả xử lý phải chuyển đến trang tương ứng trong tập tin struts-config.xml tương tự như Tổng quan về Struts Framework

        • Chúng ta đã cấu hình hoàn tất cho chức năng đầu tiên
      • Start Server Tomcat, Build Project, Deploy và Test

        • Nếu check sai

        • Thực hiện login đúng

      • Chúng ta đã hoàn tất xong chức năng Login
    • Chúng ta thực hiện chức năng Try Again để chuyển sang trang Login khi sai
      • Với chức năng Try Again, chúng ta cần bổ sung link vào trang invalid, và chức năng này đơn giản là chuyển trang về trang index. Do vậy, chúng ta sẽ áp dụng Forward Action để chuyển trang (tên action ở đây là try.do)

      • Cập nhật lại struts-config.xml với Forward Action tương tự như Tổng quan về Struts Framework
        • Nhập action (bỏ .do) vào Action Path và nhấn Browse để chọn Resource File chuyển tới (ở đây là index.jsp)
        • Tập tin struts-config.xml được cập nhật như sau

      • Build, Deploy and Test Project đến trang fail

      • Click Try Again

    • Thực hiện chức năng trong form chức năng
      • Chúng ta đã có html form chức năng trong trang menu.jsp với action transaction.do, ở đây chúng tôi sẽ làm ví dụ thông qua truy cập trực tiếp và xử lý trực tiếp trên Dispatch Action class mà không cần qua Action Form, xử lý dữ liệu trực tiếp từ request để cho các bạn thấy sự đa dạng trong xử lý và không nhất thiết phải có Action Form
      • Chúng ta thực hiện tạo trực tiếp Action Class tên TransactionStrutsAction, trong màn hình tạo form chúng ta phải chọn Dispatch Action thay cho Action trong phần Super class

      • Trong màn hình chọn lựa chúng ta gỡ check Use ActionForm Bean vì chúng ta không dùng ActionForm nhưng chúng ta cần phải xác định dạng tham số truyền thông qua parameters để container có thể dispatch tương ứng với giá trị được đưa vào Action (cụ thể ở đây chính là control radio button để chúng ta chọn lựa – control có tên rmv)

        • Nhấn Finish, struts-config.xml được cập nhật như sau

        • Action Class phát sinh không có hàm execute mà có 02 hàm myAction1 và myAction2 như sau

        • Chúng ta thực hiện bổ sung và thay thế các hàm myAction thành các hàm giống y chang tên control radio button trên trang menu.jsp

      • Để tận dụng session của ứng dụng thông qua cơ chế Login của phần chức năng đầu, chúng ta sẽ lưu giá trị balance của khách hàng khi login thành công
        • Bổ sung thêm thuộc tính balance trong LoginActionForm, và các hàm get/set tương ứng
        • Bổ sung thêm việc cập nhật giá trị trong hàm checkLogin

      • Chức năng balance chỉ cần forward sang trang trình bày, cập nhật chức năng balance như sau

      • Tạo trang show để lấy balance từ session trình bày ra màn hình
        • Sử dụng JSTL kết hợp với EL, HTML để trình bày dữ liệu ra màn hình
        • Import thư viện JSTL 1.1 vào library

      • Chúng ta cần mapping Action Forward “success” của action search với trang showBalance.jsp trong struts-config.xml như sau

        • Cấu trúc project được cập nhật như sau

        • Build, Deploy và Test Project đến form menu

        • Click nút get Balance, nhấn nút Perform

      • Tạo chức năng in hóa đơn lần cuối cùng để hỗ trợ chức năng trên menu chính cùng với chức năng in hóa đơn trong chức năng click here trên
        • Chúng ta vào trong TransactionStrutsAction, chọn hàm lastAccess để bổ sung code xử lý cho việc in giá trị ra màn hình
        • Trước khi bổ sung code cho hàng này, chúng ta nhận thấy rằng kết quả của việc xử lý này là chúng ta sẽ nhận được một object chứa thông tin transaction cuối cùng từ bảng ATMDetails
          • Do vậy, chúng ta cần thiết kế một object đó đón nhận giá trị mapping từ DB
          • Object này cung cấp các hành vi tương ứng để có thể truy cập và thiết lập thuộc tính
          • Đồng thời cung cấp hành vi cho chúng ta truy vấn lấy ra record cuối cùng của việc rút tiền nghĩa là thuộc tính type là false
        • Chúng ta tạo ra object tên TransDTO với cấu trúc chứa tất cả thuộc tính trong bảng ATMDetails ngoại trừ khóa ngoại
          • Đưa các thành phần get/set cho nó
          • Và cài đặt hàm getLastTrans

        • Chúng ta cập nhật code cho method lastAccess như sau
          • Lấy session hiện hành
          • Truy cập ActionForm để lấy ra user hiện hành và tạo ra object để lấy action cuối cùng
          • Đưa kết quả vào trong request scope để truyền đi qua trang trình bày

        • Chúng ta tạo trang để lastOrder.jsp để trình bày như sau (sử dụng JSTL1.1 bằng cách add thêm vào library của project)

        • Chúng ta tạo thêm trang fail.jsp để thông báo lỗi như sau

        • Chúng ta thực hiện mapping thêm vào action mapping transaction với 02 kết quả trả về là lastSuccess và lastFail như sau

        • Chúng ta mapping thêm menu.do vào Action Forward để chuyển về trang menu.jsp

        • Cấu trúc project cho tới bước này như sau

        • Clean and Build, Deploy và Test chương trình đến menu chức năng chính

        • Chúng ta chọn Print Last Bill và nhấn nút Perform

        • Click link here để quay lại menu chính

      • Chúng ta nhìn nhận qua 02 chức năng trình bày balance và in hóa đơn giao dịch lần cuối sử dụng dispatch để chuyển xử lý trên thanh address đều chứa giá trị rmv với tên một action tương ứng trong action class
        • Do vậy, chúng ta sẽ mapping action print.do bằng cách gọi transaction.do và truyền tham số rmv với chức năng mà chúng ta mong muốn gọi thực thi lại
        • Chúng ta thêm một Forward action gọi chức năng lastAccess của transaction action vào trong struts-config như sau

        • Bổ sung thêm link để return về menu trong trang showBalance.jsp để tái sử dụng lại việc quay về trang menu

        • Build, Deploy và test đến trang in ra balance

        • Click here vào chỗ “print the order”

        • Chúng ta đã hoàn tất xong chức năng in hóa đơn lần cuối cùng
      • Chúng ta thực hiện tiếp tục với chức năng Deposit, Withdraw và Transfer
        • Deposit
          • Chỉnh sửa code trong hàm deposit để tạo ra một transaction mới trong bảng ATMDetails của user hiện hành
          • Đồng thời cập nhật balance của bảng ATMAccount
          • Ngoài ra, phải cập nhật giá trị tổng balance của object Login Action Form để khi truy vấn trực tiếp trong session sẽ vẫn đúng cho 02 chức năng get Balance và get Last Access trong phần trên
          • Kết quả sẽ được thông báo thành công hay thất bại
        • Thực hiện chỉnh sửa code trong hàm deposit của TransactionStrutsAction như sau

        • Chúng ta tạo trang deposit.jsp để thông báo kết quả trả về cho người dùng

        • Thực hiện mapping thêm action deposit  vào transaction action mapping cho kết xuất kết quả

        • Clean and Build project, deploy và test đến trang menu

        • Nhập 23 vào trang Amount và nhấn Perform

        • DB trước khi cập nhật

        • DB sau khi thực thi

      • Chúng ta làm tiếp tục và tương tự cho withdraw nhưng thay vì cộng vào như deposit, chúng ta sẽ phải trừ ra và kiểm tra trước khi withdraw
        • Ở đây, chúng ta sẽ tận dụng lại trang deposit.jsp vì tổng quan chúng ta thấy giá trị truyền về trang trình bày chỉ là message do vậy chúng ta sẽ tái sử dụng để thấy được tính ưu việt khi sử dụng dispatch action

        • Chúng ta bổ sung thêm link cho phép in hóa đơn truy xuất lần cuối cho withdraw ngay trong trang deposit.jsp để người dùng có thể coi hóa đơn withdraw lần cuối

        • Không cần mapping gì cả vì chúng ta đang tái sử dụng lại trang deposit.jsp
        • Build, Deploy và test Project đến trang menu

          • Nhập 26, chọn Withdraw và nhấn Perform

          • Click here với print the order

          • DB cập nhật

        • Chúng ta thực hiện tiếp tục cho chức năng Transfer
          • Chức năng này tương tự như withdraw
          • Nhưng hệ thống sẽ làm thêm trạng thái là kiểm tra account có tồn tại hay không rồi mới thực hiện trừ và cập nhật bên account hiện hành
          • Sau đó ghi deposit và cập nhật account của người nhận
          • Ở đây, chúng ta sẽ mô tả trạng thái đặc biệt để đưa thêm dispatch vào trong action cụ thể là
            • Khi người dùng chọn transfer thì action sẽ kiểm tra tiền đủ để chuyển không
            • Nếu đủ sẽ hiện ra trang nhập Account
            • Khi người dùng nhấn chuyển thì hệ thống sẽ kiểm tra account, nếu tồn tại thì mới chuyển và ở đây chúng ta sẽ lập trình để tận dụng thêm một dispatch mới trong action thông qua tham số rmv
          • Chúng ta cập nhật hàm transfer trong TransactionStrutsAction như sau (chúng ta sẽ vẫn tái sử deposit.jsp để trình bày kết quả). Hàm này dùng để kiểm tra giá trị đủ thì chuyển sang nhập account, ngược lại transfer sang lỗi

        • Chúng ta tạo trang transfer.jsp đế đón nhận account

          • Lưu ý: trong form chúng ta dùng hidden form field để chuyển tiếp giá trị amount cho phần xử lý tiếp theo khi thực hiện transfer
          • Ở đây chúng ta dùng action trung gian để truyền thông tin đến một action của dispatch đã có sẵn, struts không cho phép chúng ta ghi đè action khi chuyển đi. Cho nên chúng ta dùng action trung gian ở đây là transferProcess.do để gọi xử lý process trong dispatch Action chúng ta đã có sẵn thông qua parameter rmv
        • Chúng ta cần thêm một Action mới trong Dispatch Action Class có tên gọi là process, chúng ta bổ sung phương thức process trong Dispatch Action Class (Cụ thể là TransactionStrutsAction) và xử lý như là withdraw nhưng phải có kiểm tra account có tồn tại hay không trước khi xử lý (action process là phần mở rộng mới cho dispatchAction khi cần tận dụng)

        • Chúng ta mapping struts-config với action cho transaction là transfer chuyển sang trang transfer.jsp

        • Để chuyển đổi từ action này sang action sang và vẫn giữ nguyên giá trị, chúng ta sẽ dùng ForwardAction, ở đây chúng tôi sẽ sử dụng phần ForwardAction do struts hỗ trợ sẵn để chúng ta không tốn thời gian tạo một Action Class mà không làm gì cả
          • Mở tập tin struts-config.xml, click phải chuột, chọn Struts, chọn Add Action. Cửa số màn hình xuất hiện như sau

          • Click nút Browser để chọn Action Class, gõ vào chữ Forward

          • Chọn ForwardAction của gói org.apache.struts.action, click OK
          • Gỡ chọn Use Action Form Bean, gõ đường dẫn vào parameter là chuyển sang /transaction.do?rmv=process nghĩa là nhờ dispatch chuyển đến chức năng process, nhấn nút OK

        • Clean and Build, Deploy va test chương trình đến màn hình menu

        • Chọn transfer và nhập 10, nhấn nút Perform

        • Nhập account có trong hệ thống và nhấn Transfer

        • Click here to return menu page và nhấn getBalance, chọn Perform

        • Chúng ta đã hoàn tất xong 03 chức năng deposit, withdrawn và perform
    • Chúng ta sẽ hoàn tất chức năng cuối cùng là Liệt kê tất cả transaction trong 1 tháng “List transaction in current month”
      • Khi chọn option và click vào chức năng này thì hệ thống sẽ thực hiện tìm kiếm các giao dịch trong tháng hiện hành và trả về mảng object để chúng ta trình bày ra màn hình cho người dùng dưới dạng lưới
      • Để thực hiện chức năng này chúng ta sẽ bổ sung thêm một object tên là TransCollection chứa collection TransDTO với chức năng listAll với 03 tham số truyền là tháng, năm cùng với username đang cần truy vấn và kết quả là cập nhật collection của đối tượng mới tạo ra

      • Bổ sung chức năng cho hàm listTrans để gọi collection và chuyển sang trang trình bày cụ thể như sau

      • Chúng ta tao trang transShow.jsp để trình bày dữ liệu như sau

      • Thực hiện mapping action của transaction trạng thái (cụ thể là listTrans) để có thể thực hiện transaction cho việc trình bày dữ liệu của một tháng của năm cụ thể sau khi thông qua dispatch để chuyển đến listTrans action và trình bày dữ liệu trên trang transShow.jsp

      • Clean and Build, Deploy và Test chương trình đến trang menu

      • Click chọn List transaction in current month, click chọn Perform

    • Chúng ta đã hoàn tất chức năng cuối cùng của ứng dụng áp dụng cơ chế dispatch Action của Struts Framework.

Chúc mừng các bạn đã hoàn tất và nắm tổng quát khái niệm về Dispatch trong Struts 1.x Framework, cách thức thiết kế, mô hình ứng dụng và cài đặt ứng dụng web theo Struts Framework thông qua một ứng dụng cụ thể rõ ràng và gần gũi. Qua đó chúng ta thấy được thêm các ưu điểm và khuyết điểm của framework này.

Chúng tôi hy vọng nội dung của bài này giúp ích các bạn trong việc cài đặt mô hình ứng dụng web

Rất mong sự góp ý chân thành và chia sẻ của quí vị về vấn đề này. Hẹn gặp lại quý vị ở chủ đề khác

Không có nhận xét nào:

Đăng nhận xét