Chủ Nhật, 23 tháng 10, 2016

Strust Framework

I.  Định nghĩa Strust Framework

- Strust là một framework phục vụ việc phát triển các ứng dụng Web trên Java. Strust cung cấp một framework thống nhất để triển khai các ứng dụng Servlet và JSP sử dụng kiến trúc MVC, Sử dụng mẫu thiết kế MVC, Strust giải quyết được rất nhiều các vấn đề liên quan đến các ứng dụng Web hướng business đòi hỏi hiệu năng cao sử dụng Java Servlet và JSP. Strust cơ bản định hình lại cách các web programmer nghĩ về và cấu trúc một ứng dụng web

- Strust được phát triển bởi Craig McClanahan và được bảo trợ bởi Apache, nhóm Jakarta

II. Tiên trình thực thi mô hình MVC của Strust
* Mô tả tiến trình mà hầu hết các ứng dụng struts phải tuân theo
Tiến trình này có thể được chia thành 5 bước cơ bản sau:

1. Một request được gửi đến từ view

2. ActionServlet sẽ tiếp nhận request này, phân tích, kiểm tra. Sau đó chỉ định cho Action tương ứng thực thi yêu cầu, tính toán những tác vụ cần thiết.
ActionServlet đóng vai trò là Controller

3. Action sẽ thao tác và xử lí trên Model của ứng dụng

4. Mỗi khi Action hoàn thành việc thao tác và xử lí, nó trả quyền điều khiển về cho ActionServlet kèm theo một key gắn kèm với kết quả trả về. ActionServlet sẽ dựa vào key này mà quyết định xem các kết quả trả về sẽ được hiển thị như thế nào.

5. ActionServlet trả lời bằng cách gửi lại một request cho view là một liên kết đến kết qua trả về của Action thông qua key trên. Sau đó, view làm nốt công việc trình bày kết quả.


III. Cấu trúc của Struts
•    Một hoặc nhiều Action, mỗi action trong trang web sẽ ánh xạ chính xác đến một thành phần <action> được định nghĩa trong file struts-config.xml. Action được triệu gọi bởi người dùng từ một trang HTML hoặc JSP thông qua một liên kết hay thông qua thuộc tính action trong thẻ <form>. 
•    Một thành phần <action> sẽ định nghĩa một lớp ActionForm, trong một số trường hợp, nó sẽ được sử dụng để validate(xác nhận) các dữ liệu trong form được submit bởi người sử dụng. Nó cũng định nghĩa lớp Action nào sẽ được sử dụng để xử lý các yêu cầu từ phía người dùng.
•    Một lớp ActionForm có thể sử dụng một hoặc nhiều forward được định nghĩa trong thẻ <action> đề nói cho một ActionServlet trả về các response tương ứng với các request của người dùng. Chúng ta có thể định nghĩa nhiều forward trong thẻ <action-mapping>. 


IV. Các thành phần chính của một ứng dụng struts:

1. Struts Model Components
- Model là một thành phần được cho là quan trọng nhất trong các ứng dụng MVC.
- Model bao gồm các business entities và một tập các qui tắc để quản lí việc tổ chức và thao tác dữ liệu.
- Struts không cung cấp các Model Component chuyên dụng, tuy nhiên chúng ta có thể sử dụng lại các Model của các ứng dụng khác hoặc tự xây dựng các model của riêng mình.

2. Struts View Components
- Mục đích của thanh phần Struts View này cũng giống y như một thành phần view trong các ứng dụng theo mô hình MVC: chịu trách nhiệm trình bày thông tin được cung cấp bởi Model.
- Struts sử dụng JSP để thiết kế thành phần View. Ngoài ra, để hỗ trợ và mở rộng khả năng của View, chúng ta cũng có thêm thư viện Taglib, sử dụng HTML, JS… cho mục đích trình bày thông tin.

3. Struts Controller Components

- Struts cung cấp hai thành phần rất quan trọng đó là ActionServlet và Action để điều khiển và quản lí mọi yêu cầu của người dùng cũng như việc thao tác với dữ liệu

- ActionServlet chịu trách nhiệm nhận và xử lí các request từ phía người dùng, chỉ định Action thực thi tương ứng với từng yêu cầu cụ thể.

- Action chịu trách nhiệm thao tác với Model, nó kết hợp rất chặt chẽ với ActionServlet. Cả hai thành phần này đóng vai trò làm Controller trong Struts.

- Struts taglib cung cấp một tập các tag library cho việc phát triển ứng dụng, bao gồm cả các taglib hỗ trợ thiết kế HTML và JSP taglib.

- Struts Config: 
File cấu hình của ứng dựng Struts.

V. Thư viện thẻ Struts để xây dựng các thành phần trình diễn trong một ứng dụng: 
- <templete>: cung cấp cho nhà phát triển ứng dụng một tập các thẻ JSP để chia nhỏ giao diện người dùng thành các thành phần có thể dễ dàng tháo rắp. 
- <bean>: cung cấp cho nhà phát triển ứng dụng một tập các thẻ JSP để quản lý đầu ra từ một JavaBean. 
- <logic>: có thể được sử dụng để ứng dụng các điều kiện logic trong một trang JSP. 
- <html>: có thể sử dụng để tạo ra các thành phần form 

VI. Các thành phần cơ bản của Strust
* Struts là một tập hợp các thư viện Java và có thể chia ra làm các nhóm sau:
- Framework cơ sở
- Thư viện thẻ JSP
- Tiles plugin
- Validator plugin

a. Framework cơ sở
Framework cơ sở cung cấp các tính năng MVC cốt lõi. Nền tảng của framework cơ sở là Controller servlet: ActionServlet. Phần còn lại của framework cơ sở bao gồm các lớp cơ sở mà ứng dụng của bạn sẽ extend và các class tiện ích. Nổi bật nhát trong các lớp cơ sở là lớp Action và lớp ActionForm. Lớp Action được sử dụng bởi ActionServlet để sử lý các request xác định. Lớp ActionForm được sử dụng để capture dữ liệu từ các HTML form và được sử dụng để chuyển dữ liệu trở lại View để generate response.

b. Thư viện thẻ JSP
Struts đưa ra các thư viện thẻ để hỗ trợ việc lập trình View logic trong JSP. Các thư viện thẻ JSP cho phép các JSP author sử dụng các thẻ giống HTML.

+ HTML: Sử dụng để generate các THML form tương tac với Struts API
+ Bean: Sử dụng để làm việc với các Java bean object trong JSP
+ Logic: Sử dụng để implement các logic điều kiện đơn giản trong JSP
+ Nested: Sử dụng để cho phép các mức nested tùy ý

c. Tiles plugin
Tiles là một JSP template framework giúp thuận tiện cho việc tái sử dụng mã HTML.

d. Validator plugin
Validator là một framework với khả năng thực hiện xác nhận tính hợp lệ của dữ liệu ở cả phía server và client.

* Chu kì sống của một Struts


Trước khi đi vào chi tiết các lớp, nghía qua một chút về tiến trình thực hiện của một ứng dụng Web sử dụng Struts cũng có lẽ không thừa.

1. Trình duyệt tạo một request tới ứng dụng Struts sẽ được xử lý bới ActionServlet (Controller).

2. ActionServlet (Controller) populate subclass của ActionForm (View), do ta viết, với dữ liệu form HTML và invoke method validate() của nó.

3. ActionServlet (Controller) execute subclass của Action do ta viết (Controller).

4. Subclass của Action (Controller) đó sẽ tương tác với model component và chuẩn bị dữ liệu cho để hiển thị.

5. Sau đó subclass của Action (Controller) đó sẽ chuyển điều khiển tới JSP (View).

6. JSP (View) sử dụng dữ liệu nhận được để generate response về cho trình duyệt.


VII. Ưu điểm của Struts (so với MVC sử dụng requestDispatcher):

- Struts 2 được xây dựng và phát triển dựa trên nền tảng mô hình MVC nên nó thừa hưởng được đầy đủ các ưu điểm mà mô hình MVC đem lại.

- Dễ dàng tùy chỉnh (customize) chu kỳ xử lý (request lifecycles ) cho từng action

- Giải quyết hiệu quả vấn đề internationlization và localization trong các ứng dụng web

- Tự động chuyển đổi kiểu dữ liệu chuỗi truyền thống trong tham số request parameter thành các đối tượng lớp dữ liệu java => tiết kiệm được thời gian và công sức cho các lập trình viên

- Cung cấp các thẻ tag,các themes và templates giúp cho việc làm giao diện GUI trở nên dễ dàng,nhanh lẹ và tăng tính tái sử dụng.

- Tính mở rộng (Extensibility) cao thông qua việc hỗ trợ các plug-in

- Hỗ trợ portal.

- Hỗ trợ AJAX

- Dễ dàng tích hợp với Spring framework(*) và Hibernate.

VIII. Nhược điểm của Strust
 Để sử dụng MVC với chuẩn RequestDispatcher, ta cần nghiên cứu sâu với chuẩn JSP và Servlet APIs. Để sử dụng MVC với Struts, ta còn phải hiểu rõ cả framework rộng lớn và phức tạp, nó tương tự như việc tìm hiểu cả cái cốt lõi của hệ thống. Điều bất lợi này đặc biệt đáng kể với những dự án nhỏ, những dự án có ít thời gian để thực hiện, và những lập trình viên có ít kinh nghiệm; ta mất rất nhiều thời gian trong việc nghiên cứu Struts khi thực hiện đề án. 

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

Đăng nhận xét