Thứ Sáu, 18 tháng 7, 2014

Struts 2/ MVC Architecture, Advantage and Disadvantage

I. Mô hình hoạt động của Struts2 framework.


Đầu tiên khi có request từ phía client, request sẽ đi qua một controller, controller ở đây đầu tiên là một Dispatcher Filter và sau đó là một loạt các intercepter, tuỳ ở trong config (struts.xml) chúng ta config như thế nào với request đó thì nó sẽ được controller chuyển đến một action tương ứng và gọi ra phương thức execute để tiến hành xử lý. Sau khi xử lý xong thì sẽ trả về giá trị dưới dạng chuỗi String cho intercepter, lúc này sau khi đã có giá trị trả về thì controller sẽ xem xét nó thuộc về loại nào và tiến hành forward đến nơi mà request cần đến. Nó có thể là một action hay là một trang jsf, jsp....

Để hiểu rõ hơn ta quan sát ở dưới đây:

<form action="Searchword">
            Nhập tên sách: <input type="text" name="name">
            <input type="submit" value="search">
        </form>

ở trên là một form input cho phép nhận thông tin do người dùng nhập vào. Sau khi nhận được thông tin và người dùng gửi đi thì controller sẽ dựa vào action của form để xác định request trong file config. với form như trên ta sẽ có 1 action đã được viết sẵn trong struts.xml như dưới.

<action method="execute" class="Struts.SearchWord" name="Searchword">
            <result name="success">Result.jsp</result>
            <result name="error">Error.jsp</result>
        </action>

Sau khi đi qua bước này thì controller đã xác định được nơi nào để xử lý request và sẽ chuyển đến nơi đó. Trong trường hợp này là action Searchword như dưới đây

if ("".equals(name) || name.trim().isEmpty()) {
            return ERROR;
        } else {
            books = new BookBean().getBookByName(name);
            return SUCCESS;
        }

như ta thấy thì sau khi action xử lý xong sẽ trả về giá trị dưới dạng chuỗi. và sau đó các result được khai báo sẵn trong file struts.xml sẽ có nhiệm vụ xác định phải trả về cái gì. Trong trường hợp này khi trả về SUCCESS thì server sẽ chuyển hướng request đến trang Result.jsp và đến trang Error.jsp nếu như giá trị trả về là ERROR. Sau khi hoàn tất lớp View sẽ tiến hành kéo dữ liệu về và hiển thị cho người dùng.

II. Ưu điểm của Struts 2 framework.

- POJO forms and POJO actions : Struts2 đã làm đi với các hình thức hành động đó là một phần của khung Struts. Với Struts2, bạn có thể sử dụng bất kỳ POJO để nhận các hình thức đầu vào. Tương tự như vậy, bây giờ bạn có thể thấy bất kỳ POJO như một lớp học hành động. 

- Hỗ trợ thẻ :  Struts2 đã được cải thiện các thẻ hình thức và các thẻ mới cho phép các nhà phát triển viết mã ít hơn. 

- Hỗ trợ Ajax :  Struts 2 hỗ trợ việc dùng các thẻ Ajax giúp cho việc xử lý mạnh hơn rất nhiều và tuyệt vời khi Struts 2 hỗ trợ Web 2.0.

- Easy Integration : Struts 2 đã trở nên dễ dàng khi mà hỗ trợ tích hợp 
Tích hợp với các khuôn khổ khác như Spring, Tiles và SiteMesh giờ là dễ dàng hơn với nhiều tích hợp sẵn với Struts2. 

- Template Support :  Hỗ trợ để tạo ra quan điểm sử dụng các template

- Plugin Support : Các hành vi cốt lõi Struts2 có thể được tăng cường và bổ sung bằng việc sử dụng các plugin. Một số bổ sung có sẵn cho Struts2. 

- Profiling : Struts2 cung cấp hồ sơ hợp để gỡ lỗi và hồ sơ của ứng dụng. Thêm vào đó, Struts cũng cung cấp tích hợp gỡ lỗi với sự giúp đỡ của xây dựng trong công cụ gỡ lỗi. 

- Easy to modify tags : Tag đánh dấu trong Struts2 có thể được sửa đổi một cách dễ dàng bằng cách sử dụng các mẫu Freemarker. Điều này không cần yêu cầu bạn phải biết về JSP hoặc kiến thức java. HTML cơ bản, XML và kiến ​​thức CSS là đủ để sửa đổi các thẻ một cách nhanh chóng 

III. Nhược điểm.

- Mất nhiều thời gian để tìm hiểu về framework này vì nó khá khó dùng, khó nắm bắt. 

- Khó debug khi gặp lỗi.

- Tài liệu không nhiều.

Nhận xét.

- Code config của struts 2 ít hơn rất nhiều so với Struts 1

- Làm Tag dễ dàng

- Ta có thể đo thông tin của ứng dụng chạy như thế nào

- Tích hợp các công cụ để phát triển (Plugin..)

- Thứ hay nhất trong struts2 đó là do việc tách project ra thành các module riêng biệt nên rất dễ mở rộng, tái sử dụng (Struts 2 có tích hợp template và tích hợp một số thành phần khác).

- Hỗ trợ Ajax để làm web 2.0 rất hiệu quả và đẹp.

Cơ chế hoạt động của struts 2 tương tự như mô hình mvc của struts 1 nhưng điểm khác biệt đó là pull. dữ liệu được kéo từ model lên trực tiếp trên view chứ không phải theo kiểu push của MVC.















1 nhận xét: