Struts2 là gì?
Struts là một framework mã nguồn mở của Java dùng để phát triển các ứng dụng web quy mô lớn bằng J2EE. Nó cung cấp khuôn khổ để triển khai các ứng dụng có kiến trúc MVC để thúc đẩy sự phân tách các mối quan tâm giữa logic nghiệp vụ và logic trình bày.
Framework này được tạo ra bởi Craig McClanahan và được Apache hỗ trợ từ tháng 5/2000 và sau đó đến tháng 06/2001 phiên bản Struts 1 được ra mắt. Và đến 14/01/2019 phiên bản Struts 2.0 được công bố. Đây là sự kết hợp hoàn hảo giữa Webwork Framework và Struts 1.
Struts 2.0 là phiên bản tiếp theo của Struts 1 được sử dụng để tạo ứng dụng web dựa trên mẫu thiết kế MVC. Struts2 giúp đơn giản hóa hơn mô hình Struts 1 Framework như là rút gọn tập tin cấu hình hay sử dụng annotation thay thế cho tập tin cấu hình.
Tính năng của Struts2 là gì?
Sau đây là một số tính năng nổi bật của Struts 2 Framework.
Hỗ trợ kiến trúc MVC
Struts 2 được thiết kế dựa trên việc phát triển các ứng dụng dựa trên kiến trúc MVC, cung cấp sự tách biệt giữa logic nghiệp vụ và logic trình bày. Logic nghiệp vụ được chứa bên trong thành phần được gọi là – “Controller” hoặc “Action Servlet” và Logic trình bày có thể được xác định linh hoạt bên trong bất kỳ tệp nào liên quan đến chế độ xem như HTML hoặc JSP.
Hỗ trợ Action
Action là các lớp Java đặc biệt giống như API REST, cung cấp logic nghiệp vụ để xử lý mọi yêu cầu đến và tạo ra phản hồi thích hợp. Action được gọi khi một URL cụ thể được truy cập. Trong struts 2, lớp Action là POJO và bạn không cần triển khai một giao diện một cách bắt buộc.
Hỗ trợ Tag
Struts 2 có hỗ trợ thẻ tag tùy chỉnh giúp các nhà phát triển đơn giản hóa quá trình viết các trang web động với ít mã hơn. Đồng thời, giúp tích hợp logic nghiệp vụ cùng với lớp trình bày.
Hỗ trợ AJAX:
Struts2 được hỗ trợ bởi AJAX hiệu quả hơn trong việc phát triển các ứng dụng động và tương tác mà không cần viết mã JavaScript mở rộng. Nó được hỗ trợ bởi một thư viện mạnh mẽ.
Tích hợp dễ dàng
Struts2 có khả năng tích hợp dễ dàng với các framework khác như Spring, Hibernate, JPA, Tiles, SiteMesh,..Giúp các nhà phát triển tận dụng được sức mạnh của các khung công tác mạnh mẽ khác.
Các POJO form và POJO action:
Struts2 loại bỏ các Form Action – một phần không thể tách rời của Struts framework. Với Struts2, bạn có thể sử dụng bất kỳ POJO nào để nhận dữ liệu từ form. Đồng thời cũng có thể xem bất kỳ POJO nào làm lớp Action.
Ngoài ra, Struts2 còn được cải tiến với các tính năng khác như:
- Hỗ trợ Template: Hỗ trợ tạo các view bằng cách sử dụng các template.
- Hỗ trợ Plugin: Hiện có khá nhiều plugin có sẵn cho Struts2.
- Profiling: Struts2 cung cấp tích hợp profiling để gỡ lỗi ứng dụng. Struts cũng cung cấp gỡ lỗi được tích hợp bằng công cụ gỡ lỗi bên trong.
- Dễ dàng sửa các Tag markups: Struts2 có thể được tinh chỉnh bằng cách sử dụng các mẫu Freemarker. Bạn không cần có kiến thức về JSP hoặc java mà chỉ cần có kiến thức về HTML, XML và CSS là có thể sửa đổi các thẻ tag.
- Cấu hình ít hơn: Struts2 cấu hình ít hơn thông qua các giá trị mặc định. Bạn không cần phải cấu hình gì cả trừ khi bạn muốn thiết lập cách khác với các thiết lập mặc định của Struts2.
- Các công nghệ View: Struts2 được hỗ trợ tuyệt vời cho nhiều lựa chọn view (JSP, Freemarker, Velocity và XSLT).
Cơ chế hoạt động của Struts 2 Framework.
Cơ chế hoạt động của Struts 2 khá tương đồng với mô hình MVC của Struts 1 nhưng nó có sự khác biệt vì nó là pull-framework – dữ liệu được lấy trực tiếp từ Action để đưa đến View. Cụ thể:
- Controller: FilterDispatcher là servlet Filter có nhiệm vụ đón nhận yêu cầu và dựa trên cấu hình để xác định Action cụ thể để đón nhận yêu cần cần xử lý.
- Model: Action đảm bảo đặc tính của một object trong mô hình hướng đối tượng và thỏa tính chất của JavaBean
- View: Result là một kết xuất hay dạng xác định Action hay trang chuyển về và trình bày trên Web Browser.
Như vậy vòng đời của một yêu cầu của người dùng trong Struts2 được hoạt động theo cơ chế như sau:
- Người dùng gửi yêu cầu tới máy chủ để yêu cầu một số tài nguyên.
- FilterDispatcher xem xét yêu cầu và xác định Action thích hợp.
- Chức năng Interceptor cấu hình được áp dụng như xác nhận hợp lệ, upload file,…
- Action chọn được thực thi để thực hiện thao tác được yêu cầu.
- Tiếp đó Interceptor được áp dụng để thực hiện bất kỳ post-processing nếu cần thiết.
- Kết quả được chuẩn bị bởi view và trả kết quả về cho người dùng.
Sự khác nhau giữa hai phiên bản Struts 1 và Struts 2
Sự khác biệt chính giữa hai phiên bản Struts 1 và Struts 2 như sau:
- POJO có sẵn trong Struts2 nhưng không có trong Struts 1
- Các lớp của Struts 2 ánh xạ trực tiếp tới POJO, mang đến sự linh hoạt hơn so với Struts 1 (các lớp được ánh xạ với một JSP).
- Với tầng trình bày trong Struts 1, chỉ có thể sử dụng JSP nhưng Struts 2 nó lại cung cấp nhiều công nghệ hơn như vận tốc, freemaker, báo cáo Jasper,…
Kết luận
Trên đây là những thông tin về Struts 2 – một Framword tạo ứng dụng web dựa trên mẫu thiết kế MVC phổ biến hiện nay. Để biết thêm thông tin chi tiết hoặc cần tư vấn dịch vụ lưu trữ ứng dụng web như Cloud VPS, Thuê máy chủ vật lý, liên hệ ngay LANIT nhé!