[Bài đọc] Front Controller DispatcherServlet

1. Tổng quan

DispacherServlet hoạt động như một Front Controller trong các ứng dụng Spring MVC. Front Controller là bộ phận tiền nhận diện request, nhận diện mong muốn từ phía client cũng như các dữ liệu liên quan, tìm controller phù hợp và gửi dữ liệu liên quan tới để ủy quyền xử lý, nhận model và mô tả về view từ controller, và tìm cách để xuất view hoàn chỉnh về phía người dùng.

Đầu tiên mỗi request đến sẽ được đón nhận và xử lý bởi Front Controller. Về cơ bản nó đươc sử dụng để xử lý các HTTP request, vì nó được kế thừa thừa từ HTTPServlet. DispacherServlet gửi các request tới các controller và quyết định hồi đáp bằng cách gửi lại view.

[1] Sau khi nhận được 1 yêu cầu HTTP, DispatcherServlet sẽ tư vấn HandlerMapping Controller thích hợp.

[2] Controller nhận các yêu cầu và gọi phương thức thích hợp bằng cách sử dụng phương thức GET hoặc POST. Tại đây phương thức thích hợp được gọi sẽ thiết lập model dữ liệu và trả về tên view cho DispatcherServlet.

[3] DispatcherServlet sẽ nhận được sự trợ giúp từ ViewResolver để xác định view cho các yêu cầu.

[4] Quá trình chọn view hoàn thành, DispatcherServlet chuyển model dữ liệu tới view đó và cuối cùng, chuyển tới trình duyệt.

Dưới đây là cấu hình của DispatcherServlet trong file web.xml.

<servlet>
<servlet-name>books</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>books</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

Trạng thái cấu hình ở trên cho phép Servlet tên “books” sẽ xử lý tất cả các url có phần mở rộng là .html

Đôi khi ứng dụng yêu cầu nhiều file cấu hình, mỗi file cấu hình một mục đích khác nhau để dễ dàng quản lý: Một số file nằm trong thư mục WebApplicationContext , các thẻ bean khai báo xử lý cho database, một vài file nằm trong Servlet application context hoặc file chứa các thẻ bean định nghĩa để sử dụng trong các controller. Cấu hình dưới đây có thể sử dụng để khởi tạo các thẻ bean cho nhiều WebApplicationContext, và để tải nhiều file cấu hình:

<servlet>
<servlet-name>books</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/books-servlet.xml classpath:connection_new.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>books</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

Leave a Reply

Your email address will not be published. Required fields are marked *