**I. Giới thiệu về Framwork Struts 2 **
Struts 2 là một framwork mở dùng cho việc tạo các ứng dụng web bằng Java và được phát triển với Craig McClanahan và được hỗ trợ bởi The Apache Software Foundation.
Struts 2 được phát triển từ Webwork. Sau khi làm việc độc lập trong một vài năm, cộng đồng Webwork và Struts liên kết lại với nhau để tạo thành một framwork mới. Struts 2 được đánh giá là đơn giản hơn trong cách sử dụng so với Struts 1 phiên bản cũ.
Struts 2 là một framework theo mô hình MVC:
-
Model: là các lớp java định nghĩa các đối tượng để chứa dữ liệu (hay còn gọi là các POJO). Trong các lớp này chỉ đơn thuần định nghĩa ra các thuộc tính của đối tượng và getter, setter tương ứng với chúng.
-
View: là các trang *.jsp, dùng để hiển thị dữ liệu đến người dùng. Việc lấy dữ liệu từ model để hiển thị lên view được thực hiện nhờ thành phần của Struts2 có tên là OGNL (Object-Graph Navigation Language) với các thẻ hay còn gọi là custom tag của nó được sử dụng trên các trang *.jsp
-
Controller : là phần xử lý logic, trong Struts2 thì Controller còn được gọi là Action. Mỗi Action sẽ là một lớp java có chứa tham chiếu đến model, và từ đó có thể truy cập trực tiếp dự liệu từ model. Dữ liệu lấy từ model sẽ được lấy ra và xử lý bên trong các phương thức của lớp đó. Mỗi phương thức sau khi xử lý dữ liệu xong sẽ cập nhật lại những thay đổi vào model và sau đó chuyển hướng đến một View tương ứng để hiển thị kết quả của sự xử lý đến người dùng.
Struts 2 hỗ trợ Annotation dựa trên cấu hình để dễ dàng tạo và trực quan hơn. Lớp Action trong Struts 2 hoạt động như một mô hình trong ứng dụng web. Không giống như Struts, lớp Action trong Struts 2 là một đối tượng POJO chuẩn vì thế đơn giản hóa việc kiểm tra mã.
Struts 2 cũng kèm theo các hàm APIs để cấu hình bộ Interceptors nhằm làm giảm đáng kể các Coupling trong ứng dụng. Phần View trong Struts 2 được đánh giá cao và nó hỗ trợ nhiều kiểu kết quả khác nhau như Velocity, FreeMarker, JSP…
**II. Kiến trúc của Struts 2 **
Kiến trúc Struts 2 dựa trên Framwork Webwork2. Nó sử dụng các công nghệ JEE chuẩn như Java Filters, JavaBeans, ResourceBundles, Locales, XML trong kiến trúc của nó.
_Hình minh họa mô hình của framwork_
Vòng đời của Struts bắt đầu khi có một yêu cầu được gởi từ phía Client. Yêu cầu này sẽ gởi đến ActionMapper.
-
ActionMapper quyết định xem khi nào thì một Action nên được gọi. Sau đó chuyển kết quả cho FilterDispatcher.
-
FilterDispatcher tiếp nhận kết quả từ ActionMapper và chuyển giao quyền điều khiển cho ActionProxy.
-
ActionProxy đọc file cấu hình chẳng hạn như sentayho.com.vn. ActionProxy tạo một thể hiện của lớp ActionInvocation và chuyển giao quyền điều khiển cho lớp này.
-
ActionInvocation chịu trách nhiệm thực hiện các lệnh được cài đặt. Nó gọi Interceptors nếu cần thiết, sau đó sẽ gọi Action.
-
Khi Action trả về, ActionInvocation có trách nhiệm tìm kết quả thích hợp liên quan với mã kết quả được ánh xạ trong sentayho.com.vn.
-
Interceptors được thực thi một lần nữa theo thứ tự ngược lại và trả lời đáp ứng cho Filter (Trong hầu hết các trường hợp là FilterDispatcher). Và kết quả được chuyển đến cho Servlet container và gởi trả lại cho Client.
Như vậy trong bài viết đã giới thiệu các thành phần cơ bản của nó trong việc sử dụng để tạo ra các ứng dụng web theo mô hình thiết kế MVC. Struts2 đã và đang là một trong số các framework được sử dụng phổ biến trong quá trình phát triển ứng dụng web. Struts2 còn rất nhiều các thành phần với các tính năng khác mà chúng ta sẽ có cơ hội đề cập đến trong các bài viết sau.