Các khung công tác Java có hai hương vị cơ bản. Một được gọi là khung "Hành động", Khung còn lại là "Thành phần".
Các khung hành động chuyên về ánh xạ các yêu cầu HTTP tới mã Java (các hành động) và ràng buộc các yêu cầu HTTP đối với các đối tượng Java. Servlets là cơ bản nhất trong các khung hành động, và là cơ sở khi tất cả các khung công tác khác được xây dựng.
Struts là khung hành động phổ biến nhất, nhưng tôi không thể có lương tâm tốt để giới thiệu nó cho bất kỳ ai. Struts 2 và Stripes hiện đại hơn, và rất giống với nhau. Cả hai đều là ánh sáng trên cấu hình và dễ sử dụng ra khỏi hộp, cung cấp chức năng ràng buộc rất tốt.
Khung thành phần tập trung vào giao diện người dùng và có xu hướng quảng bá kiến trúc hướng sự kiện hơn dựa trên các thành phần giao diện người dùng cấp cao (nút, hộp danh sách, v.v.). Các khung công tác có xu hướng ẩn yêu cầu HTTP thực tế đó từ bộ mã hóa theo một vài lớp. Họ làm cho việc phát triển các giao diện người dùng nâng cao hơn dễ dàng hơn nhiều. .NET là một khung thành phần cho Windows. Trên Java, các khung thành phần phổ biến là JSF (một tiêu chuẩn) và Wicket.
Theo quy tắc, nếu bạn đang tạo "trang web". đó là một cái gì đó giống như trình bày thông tin (như blog, hoặc một trang cộng đồng), các khung hành động hoạt động tốt hơn. Các trang web này có xu hướng đơn giản hơn, thường xuyên được đánh dấu trang, yêu cầu "URL đẹp", v.v. Điều này thường dễ dàng hơn khi thực hiện với khung công tác Hành động.
Khung thành phần tốt hơn cho những thứ như ứng dụng văn phòng trở lại với nhiều yếu tố giao diện người dùng và quy trình công việc phức tạp. Bạn sẽ tìm thấy, đặc biệt là với công cụ, rằng các kiểu ứng dụng này sẽ đi cùng nhau nhanh hơn bằng cách sử dụng một khung thành phần. Nhưng khung thành phần có quy trình làm việc phức tạp hơn, đôi khi dựa vào trạng thái ẩn, nhiều tác vụ POST, v.v. Nhiều người có URL "khủng khiếp" và đôi khi tạo các trang khó đánh dấu.
Cả hai khung công tác đều có thể được sử dụng cho cả hai tác vụ, chỉ một số khung công cụ phù hợp hơn với nhiệm vụ hơn các tác vụ khác.
Không có khung công tác nào trong số này trực tiếp giải quyết sự kiên trì, nhưng nhiều khuôn khổ có mô-đun mở rộng hoặc thành ngữ hoạt động chặt chẽ với JPA/EJB3 hoặc Hibernate.
Bạn đã hiểu cách hoạt động của web chưa? Không quốc tịch, GET, POST, v.v. – ScArcher2
Có Tôi đã phát triển với PHP & Python (Django) vì vậy tôi có một số kiến thức trung gian về cách hoạt động của web. – Tom