[Bài đọc] Spring MVC
Spring Framework là một nền tảng mã nguồn mở phổ biến để phát triển ứng dụng Java EE. Nền tảng này được cài đặt đầy đủ các đặc tính của MVC pattern để xây dựng các ứng dụng Web. Spring Framework cung cấp một front controller để xử lý hoặc lắng nghe mỗi khi có request tới ứng dụng. Sơ đồ sau mô tả cách thức Spring MVC framework xử lý request từ phía trình duyệt và các thành phần của Spring MVC framework.

Các bước xử lý trong một ứng dụng web Spring MVC gồm:
- Front Controller được coi là trung tâm của một ứng dụng web và cung cấp một điểm truy cập duy nhất cho tất cả các request tới. Front Controller gửi các request tới các bộ xử lý và cho phép các nhà phát triển sử dụng nhiều tính năng khác của framework.
- Front Controller có WebApplicationContext riêng và được kế thừa từ thư mục WebApplicationContext . Cấu hình beans trong thư mục của ứng dụng có thể được truy cập và chia sẻ giữa ngữ cảnh và thể hiện Servlet (Servlet instance) của ứng dụng. Front Controller được khởi tạo trong request đầu tiên khi áp dụng cho tất cả cácServlets.
- Một lớp được định nghĩa với annotation @Controller sẽ được xem là một Controller trong Spring MVC. Với phiên bản Spring trước 2.5 khi ánh xạ địa chỉ URL và Controller cần phải khai báo trong bộ handler. Tuy nhiên với các phiên bản mới hiện nay chỉ cần sử dụng các annotation của controller để thực hiện ánh xạ giữa địa chỉ URL và controller.
- Interface RequestMappingHandlerMapping thực hiện tìm kiếm các annotaion @RequestMapping trong các class controllers có annotation là @Controller. Cách xử lý này có thể sử dụng để tùy chỉnh cách URL được tìm kiếm bằng cách sửa đổi các thuộc tính như interceptor, defaultHandler, order, alwaysUserFullPath, urlDecode ..v.v.v
- Sau khi duyệt tìm các controller do người dùng định nghĩa, controller phù hợp sẽ được chọn dựa trên ánh xạ của URL cùng với đó phương thức phù hợp sẽ được gọi. Phương thức được chọn dựa vào ánh xạ của URL và giao thức HTTP mà phương thức đó sử dụng.
- Sau khi xử lý các logic nghiệp vụ viết trong phương thức của controller, là thời điểm để tạo ra các response (hồi đáp). Các hồi đáp này khác với HTTPRespones vì nó không trực tiếp đáp ứng người dùng. Thay vào đó response sẽ được gửi đến Front Controller. Response ở đây có thể là tên logic của view, tên logic của data model, và dữ liệu thực tế để liên kết. Thông thường đối tượng của ModelAndView được trả về Front Controller.
- Tên logic của view cũng như Front Controller, nhưng view này không chứa bất kì thông tin về các trang(page) thực tế trả về cho người dùng. Các thẻ bean cấu hình cho ViewResolver nằm trong file XXX-servlet.xml sẽ thực hiện ánh xạ giữa tên của view và trang (page) thực trả về cho người dùng. Có nhiều cách xử lý của view hỗ trợ bởi framework, nên ở đây chúng tôi chỉ mô tả ngắn gọn.
- ViewResolver là bộ phận quyết định xem Front Controller sẽ trả về View thực tế nào. Front Controller sẽ xây dựng view trả về bằng cách truy xuất các giá trị đã được gắn cho dữ liệu ở Model, kết quả này sau đó sẽ được trả về cho người dùng.
Các bước ở trên chúng ta có sử dụng một số từ khóa như Front Controller, ModelAndView, ViewResolver, ModelMap v.v.v. Các phần tiếp theo sẽ mô tả chi tiết hơn về các lớp này.
Leave a Reply