Struts là một khung công việc (framework) mã nguồn mở phổ biến được phát triển bởi Apache Software Foundation để xây dựng ứng dụng web. Nó tích hợp các công nghệ chuẩn như Servlets, Java Beans và Java Server Pages. Do được thiết kế theo mô hình ba lớp MVC ở trên, Struts mang tới cho người phát triển ứng dụng Web nhiều lợi ích của mô hình thiết kế ứng dụng Web này. Sau đây chúng ta sẽ tìm hiểu các thành phần chính trong Struts Framework.
Cài đặt của Struts theo mô hình MVC.
• Mô hình MVC trong Struts
Mẫu thiết kế MVC trong J2EE là mô hình hai. Cách thức giao tiếp giữa các thành phần được trình bày trong hình vẽ 4.2.
Hình 4-19 Kiến trúc MVC theo mô hình 2 trong J2EE
Trong hình vẽ này, các thành phần giao tiếp với nhau cụ thể như sau. 1. Trình duyệt gửi yêu cầu tới một servlet
2. Servlet sẽ tạo ra một thể hiện Java Bean để kết nối cơ sở dữ liệu 3. Servlet giao tiếp với trang JSP
4. Trang JSP giao tiếp với Java bean 5. Java Bean hồi đáp với trình duyệt
Hình vẽ 4.3 thể hiện cách thức cài đặt của Struts framework theo kiến trúc mô hình hai trình bày ở trên. Trong kiến trúc này, các thành phần cơ bản theo mô hình MVC của Struts cụ thể như sau.
• Struts Model
Thành phần Model của một hệ thống thiết kế theo mô hình MVC thường được chia làm hai hệ thống con là trạng thái bên trong của hệ thống và các hành động được thực hiện để thay đổi trạng thái bên trong của nó. Nhiều hệ thống biểu diễn hệ thống trạng thái bên trong của nó bằng tập các JavaBeans. Các thuộc tính của Beans biểu diễn đặc tính bên trong của trạng thái hệ thống. Thành phần này có thể là một cơ sở dữ liệu, công cụ tìm kiếm hoặc EJB.
Một chú ý quan trọng là Struts không trực tiếp thiết kế thành phần Model. Người phát triển hệ thống có thể tìm các thành phần thích hợp để thực hiện nhiệm
vụ của thành phần này trong Struts. Struts cung cấp các Actions và tệp cấu hình để có các cách thức hiệu quả để điều khiển cách thức gọi thành phần Model.
• Struts View
Thành phần View của một ứng dụng Struts-based thường được xây dựng bằng công nghệ JSP. Các trang JSP có thể bao gồm HTML tĩnh hoặc XML. Môi trường JSP bao gồm một tập các các thẻ chuẩn. Chúng được tổ chức trong “custom tag libraries”. Framework cũng có một tập “custom tag libraries” cho phép tạo giao diện người dùng một cách linh hoạt và giao tiếp dễ dàng với ActionForm. ActionForms lấy về và kiểm tra tính hợp lệ của dữ liệu được yêu cầu bởi ứng dụng.
ActionForm trong View còn có nhiệm vụ kiểm tra tính đúng đắn của dữ liệu được nhập vào bởi người dùng trước khi được gửi tới Controller để đưa tới các thành phần khác.
• Struts Controller
Struts cung cấp thành phần Controller để tập trung vào xử lí yêu cầu của người dùng ở phía client gửi lên server, quyết định các chức năng logic được thực hiện và đưa người dùng tới một thành phần View thích hợp. Thành phần chính của Controller trong Struts là lớp ActionServlet. Lớp này được cấu hình bởi định nghĩa một tập ActionMappings. Một ActionMapping định nghĩa một kết hợp với yêu cầu URI của yêu cầu tới và thường chi rõ đầy đủ tên của lớp hành động Action. Tất cả các Actions là con của [org.apache.struts.Action]. Các Actions đóng gói các lời gọi tới tầng nghiệp vụ, lấy về kết quả và truyền điều khiển tới thành phần View thích hợp.
Hình 4-20 Kiến trúc Struts theo mô hình 2
Lớp ActionMapping cũng được framework hỗ trợ để thực hiện điều khiển. Điều này cho phép người lập trình có thể đưa thông tin lưu trữ tới ứng dụng và vẫn
người viết mã tự định nghĩa các tên để điều khiển chuyển tới mà không cần biết tới vị trí của tầng View tương ứng.
• Ưu điểm của Struts
Việc Struts framework được thiết kế theo mô hình MVC đã giải quyết được rất nhiều vấn đề khó khăn trong việc lập trình trên các công nghệ J2EE như JSP và Servlet như:
Tính gắn bó chặt chẽ giữa các lớp
Các chức năng nghiệp vụ được chứa trong cả tầng trình diễn và tầng truy cập dữ liệu. Vì thế, mọi thay đổi trong nghiệp vụ sẽ dẫn đến thay đổi ở nhiều nơi.
Khó khăn trong xử lý dữ liệu khi được thực hiện ở tầng trình diễn.
Tóm lại, Struts thừa kế tất cả các ưu điểm của mô hình MVC trong kiến trúc ứng dụng Web.
Mặc dù Struts không giải quyết được tất cả các vấn đề trong thiết kế theo mô hình MVC. Như Struts không đưa ra giải pháp trực tiếp cho thành phần Model trong mô hình này. Khi nói đến Struts, chúng ta nên hiểu nó là thành phần chủ yếu được thiết kế cho Controller. Tầng View và Model có thể được thực hiện bằng các framework khác. Trong phần tiếp theo của đồ án, chúng ta sẽ tìm hiểu một Framework được thiết kế với mục đích chính là thực hiện các Business Logic trong tẩng Model của kiến trúc MVC.
Hibernate Framework