Struts vs Struts2
Struts (còn được gọi là Apache Struts hoặc Struts 1) là một khung mã nguồn mở đa nền tảng được viết bằng Java, nhằm mục đích phát triển các ứng dụng web Java EE. Nó là một trong những khung ứng dụng web Java EE ban đầu. Nhưng vài năm sau, Struts2 (hoặc Struts phiên bản 2) xuất hiện, và nó là một khung ứng dụng web hoàn toàn khác và được cải tiến cao. Nó đã giải quyết một số vấn đề được coi là thiếu sót trong phiên bản đầu tiên. Giờ đây, Struts2 đang được sử dụng rất nhiều để phát triển các ứng dụng Java EE trên thế giới.
Struts là gì?
KhungStruts (Struts 1) là một trong những khung ứng dụng web ban đầu để phát triển các ứng dụng web Java EE. Struts framework khuyến khích sử dụng kiến trúc MVC (Model-View-Controller). Nó là một phần mở rộng của Java Servlet API. Craig McClanahan là người sáng tạo ban đầu của Struts. Ban đầu nó được gọi là Jakaratha Struts và được duy trì trong Dự án Jakarta của Apache Software Foundation. Nó được phát hành theo Giấy phép Apache 2.0. Struts framework được gọi là một framework dựa trên yêu cầu và nó được tạo thành từ ba thành phần chính: một trình xử lý yêu cầu, một trình xử lý phản hồi và một thư viện thẻ. URI chuẩn (Định danh tài nguyên đồng nhất) được ánh xạ tới trình xử lý yêu cầu. Trình xử lý phản hồi chịu trách nhiệm chuyển giao quyền kiểm soát. Để tạo các ứng dụng tương tác với các biểu mẫu, có thể sử dụng các tính năng do thư viện thẻ cung cấp. Struts hỗ trợ các ứng dụng REST và các công nghệ khác nhau như SOAP, AJAX, v.v.
Struts2 là gì?
Struts framework đã được các nhà phát triển Java EE cho là có một số hạn chế nhất định (chủ yếu là thiếu sự tách biệt giữa lớp trình bày, lớp xử lý yêu cầu và mô hình) bởi các nhà phát triển Java EE vào thời điểm đó, và do đó vài năm sau Struts2 mới xuất hiện. Trên thực tế, Struts2 hoàn toàn khác với Struts. Trên thực tế, chúng thậm chí không chia sẻ cùng một cơ sở mã vì Struts2 chỉ đơn giản là kết quả của việc đổi tên khuôn khổ WebWork 2.2 (tức là các cộng đồng WebWork và Struts đã làm việc riêng lẻ trong một thời gian cuối cùng đã chung tay để tạo ra Struts2). Bản phát hành ổn định hiện tại của nó là phiên bản 2.2.3, được phát hành vào tháng 5 năm 2011.
Sự khác biệt giữa Struts và Struts2 là gì?
Một trong nhiều vấn đề của Struts framework là nhu cầu lập trình tới các lớp trừu tượng thay vì giao diện. Điều này đã được giải quyết bởi Struts2 framework. Ví dụ, khung công tác Struts yêu cầu các lớp Hành động được mở rộng từ các lớp cơ sở trừu tượng, nhưng các Hành động Struts2 có thể triển khai một giao diện Hành động. Do sự khác biệt trong mô hình phân luồng giữa hai phiên bản, các vấn đề về an toàn luồng xuất hiện trong khuôn khổ Struts liên quan đến các đối tượng Hành động không xảy ra trong khuôn khổ Struts2. Lý do là các đối tượng Hành động trong Struts2 được khởi tạo cho mỗi yêu cầu, trong khi khung Hành động trong Struts chỉ có một thể hiện để xử lý tất cả các yêu cầu cho Hành động đó. Không giống như khung Actions in Struts, Struts2 Actions không phụ thuộc vào API Servlet.
Khả năng kiểm tra của Struts2 framework tương đối cao hơn Struts framework. Bạn có thể kiểm tra Struts2 Actions chỉ cần làm theo ba bước: khởi tạo, thiết lập thuộc tính và gọi phương thức. Thu thập đầu vào dễ dàng hơn trong khung Struts2 vì các thuộc tính Hành động được sử dụng làm thuộc tính đầu vào mà không cần phải giữ đối tượng đầu vào thứ hai. Ngoài hỗ trợ tích hợp JSTL (có trong Struts), khung công tác Struts2 có thể sử dụng OGNL (Ngôn ngữ ký hiệu đồ thị đối tượng) mạnh mẽ và biểu cảm hơn. Để chuyển đổi kiểu, Strut và Strut2 sử dụng Commons-Beanutils và OGNL, tương ứng. Vì những cải tiến này, Struts2 framework được coi là một framework hoàn thiện cao và nó rất phổ biến trong giới lập trình Java EE. Mặt khác, khung Struts hiện được coi là lỗi thời.