Java

Tổng quan về Struts 2 Framework

Đối với các bạn lập trình viên java web. Chắc hẳn đã từng nghe khá nhiều về Apache Struts. vậy Apache Struts là gì, sự khác nhau giữa Struts 1 và Struts 2 là như thế nào? Ứng dụng Struts 2 vào dự án thực tế. Các bạn hãy cùng mình tìm hiểu ngay trong bài viết này.

Apache Struts là gì?

Apache Struts là một framwork mã nguồn mở cho việc phát triển các ứng dụng web bằng J2EE. Nó sử dụng và mở rộng Java Servlet API để giúp cho các lập trình viên áp dụng kiến trúc MVC (Model-view-controller).

Struts ra đời bởi Craig McClanahan và được Apache hỗ trợ từ tháng 5, 2000. Đến tháng 6/2001, Struts 1.0 được công bố. Phiên bản hiện tại là Struts 2.5.20 được công bố 14/01/2019. Struts 2 là sự kết hợp của Webwork Framework và Struts 1. Struts Framework hỗ trợ 02 thành phần chính đó là View và Controller, thành phần Model không được hỗ trợ nhiều bởi vì Struts Framework hướng tới lấy hay kết nối thành phần xử lý từ middleware application server.

Các thành phần của Struts Framework

  • Basic: hỗ trợ các thành phần cơ bản để xây dựng ứng dụng web trên nền tảng MVC2
  • Tag Libraries: hỗ trợ một số tag library để xây dựng ứng dụng nhưng Struts có khả năng không cần dùng tag library này mà dùng trực tiếp luôn HTML control
  • Tiles Plugins: hỗ trợ việc xây dựng ứng dụng theo dạng Master Page để áp dụng trên toàn trang web
  • Validator Plugins: hỗ trợ validation trên phía server thông qua việc cấu hình thông tin các form và control nhập liệu trên xml.

Cơ chế hoạt động của Struts Framework.

  • Khi user gửi yêu cầu truy xuất ứng dụng web, request được chuyển đến ActionServlet, đây là Servlet được tạo sẵn trong Framework để làm chức năng như Controller
  • Action Server trích xuất thành phần request nhận được để so sánh với nội dung được mapping trong tập tin cấu hình struts-config.xml để tìm ra các thành phần tương ứng cấn xử lý
  • Nếu không tìm thấy sẽ báo lỗi 404 hay lỗi tương ứng. Ngược lại, nếu tìm thấy sẽ xác định action và View tương ứng của phần xử lý. View ở đây bao gồm form đón giá trị nhập và kết xuất để trả về người dùng
  • Giá trị tương ứng của form nhập được lưu trữ vào Form Bean, thực tế là một Java Object (Action Form) có chứa các thuộc tính – state và các phương thức truy cập get, set. Tại đây, nếu có áp dụng validation thì dữ liệu được checking, checking thành công thì mới được lưu trữ vào form bean và kích hoạt chuyển dữ liệu của FormBean đến Action tương ứng để xử lý
  • Action khi đón nhận FormBean sẽ gọi thành phần xử lý tương ứng tư Java Bean hay Java Object tương ứng hay kết nối lấy dữ liệu từ DB về nếu có để xử lý
  • Sau khi xử lý hoàn tất, Action sẽ phải trả kết quả trở về Action Servlet đồng thời mapping trong struts-config.xml để xác định view kết xuất cho người dùng dựa trên kết quả xử lý trên struts-config.
  • Khi xác định xong, dữ liệu từ kết quả xử lý Action và Form Bean sẽ được đổ vào trang JSP kêt xuất tương ứng và kết quả thành công chuyển về Action Servlet
  • Action Servlet response kết quả về client – hoàn tất quá trình xử lý.

Tổng quan về Struts 2 Framework.

Struts2 là framework được sử dụng để tạo ứng dụng web dựa trên mẫu thiết kế MVC. Struts2 không chỉ là phiên bản tiếp theo của Struts1, mà nó là bản nâng cấp hoàn chỉnh của kiến trúc Struts, đơ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.

Một số đặc tính cải tiến của Strut2 Framework

  • JavaBeans được sử dụng thay thế Action form và có phương thức chỉ định để kích hoạt thực thi (mặc định là phương thức execute không có tham số truyền và kiểu trả về là kiểu String) nhằm tăng khả năng tái sử dụng của các object trong các ứng dụng và các framework khác. Đặc biệt, chúng dễ dàng thuật tiện cho testing từng thành phần chức năng và thành phần
  • Sử dụng cả annotation và tập tin cấu hình XML rút gọn
  • Sử dụng ngôn ngữ mới Object Graphic Notation Language (OGNL) thay thế cho EL của JSP
  • Sử dụng bộ taglib duy nhất thay cho 4-5 bộ taglib trong Struts 1 Framework và JSTL 1.1 trong JSP.
  • Các POJO form và POJO action: Struts2 đã loại bỏ các Form Action mà là 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. Tương tự như vậy, với Struts2 bạn có thể xem bất kỳ POJO nào làm lớp Action.
  • Hỗ trợ thẻ: Struts2 đã cải tiến các thẻ form và các thẻ mới nhằm giúp các nhà phát triển viết mã ít hơn.
  • Hỗ trợ AJAX: Struts2 đã công nhận sự tiếp quản của các công nghệ Web2.0 và đã tích hợp hỗ trợ AJAX vào sản phẩm bằng cách tạo các thẻ AJAX có chức năng rất giống với các thẻ Struts2 tiêu chuẩn.
  • Tích hợp dễ dàng: Việc tích hợp Struts2 với các framework khác như Spring, Tiles và SiteMesh giờ đây đã trở nên dễ dàng hơn.
  • Hỗ trợ Template: Hỗ trợ tạo ra các view bằng việc sử dụng các tamplate.
  • Hỗ trợ Plugin: Các hành vi của core Struts2 có thể được cải tiến bằng cách sử dụng các plugin. Hiện nay 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. Ngoài ra, Struts cũng cung cấp gỡ lỗi được tích hợp với sự trợ giúp của công cụ gỡ lỗi được xây dựng bên trong.
  • Dễ dàng sửa đổi các thẻ Tag markups trong Struts2 có thể được tinh chỉnh bằng cách sử dụng các mẫu Freemarker. Điều này không yêu cầu kiến ​​thức JSP hoặc java. Bạn có kiến thức cơ bản về HTML, XML và CSS đủ để sửa đổi các thẻ.
  • Cấu hình ít hơn: Struts2 giúp bạn cấu hình ít hơn với sự trợ giúp của việc sử dụng các giá trị mặc định cho các cài đặt khác nhau. Bạn không cần phải cấu hình một cái gì đó trừ khi bạn muốn thiết lập khác các thiết lập mặc định được thiết lập bởi Struts2.
  • Các công nghệ View: Struts2 có một sự hỗ trợ tuyệt vời cho nhiều lựa chọn view (JSP, Freemarker, Velocity và XSLT)

Các bạn hãy xem hình dưới đây để hiểu rõ hơn về sự khác biệt giữa Struts 1 va Struts 2.

Cơ chế hoạt động của Struts 2 Framework.

Cơ chế hoạt động tương tự như mô hình MVC của Struts1 Framework nhưng điểm khác biệt nó là pull-framework nghĩa là dữ liệu được lấy trực tiếp từ action để đưa đến view.

  1. Controller: FilterDispatcher là servlet Filter có nhiệm vụ đón nhận request và dựa trên cấu hình (có thể là xml hay annotation) để xác định action cụ thể để đón nhận request cho xử lý
  2. Model: Action là một java class đả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
  3. View: Result là một kết xuất hay một dạng xác định action hay trang chuyển về và trình bày trên Web Browser.

Dựa trên digram ở trên, có thể giải thích vòng đời của một request của người dùng trong Struts2 như sau:

  • Người dùng gửi request tới máy chủ để yêu cầu một số tài nguyên (ví dụ các trang).
  • FilterDispatcher xem xét yêu cầu và sau đó 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, vv
  • Action đã chọn được thực thi để thực hiện thao tác được yêu cầu.
  • Một lần nữa, interceptor đã cấu hình được áp dụng để thực hiện bất kỳ post-processing nếu cần thiết.
  • Cuối cùng kết quả được chuẩn bị bởi view và trả kết quả cho người dùng.

Ứng dụng hello world với Struts 2.

Sau đây mình sẽ hướng dẫn các bạn tạo ứng dụng hello world với Struts 2 trên IDE Intellij.

Bài viết có sử dụng tài liệu tham khảo từ các nguồn sau : https://www.tutorialspoint.com/struts_2/struts_overview.htm

http://www.kieutrongkhanh.net/2016/08/tong-quan-ve-struts-2-framework-mot_18.html

Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration