Quá trình hoạt động của Spring Framework

Khi lập trình spring framework,các bạn cần có cái nhìn tổng quan về quá trình,cách hoạt động của spring framework làm việc như thế nào.Để hiểu hơn về spring,ở bài này tôi sẽ giải thích bạn đọc về luồng đi của spring khi có một yêu cầu của người dùng gửi đến.Qua đó giúp các bạn học tốt,tìm hiểu những bài spring mvc ở google và đặc biệt là loạt bài hướng dẫn lập trình spring mvc tại Blog IT Phú Trần nhé.

 

luồng đi của spring mvc
luồng đi của spring mvc

Spring MVC có một số lớp chính sau mà các bạn cần nắm :

  • DispatcherServlet: Đây là một lớp hay còn gọi là một class,các DispatcherServlet được cấu hình trong file web.xml và các yêu cầu URL về phía client cần được ánh xạ tới Servlet.Các bạn có thể hiểu là trong một căn nhà có thể đi vào cửa sau,đi vào cửa trước,và các cửa có thể vào được ngôi nhà.Nhưng để vào được các cửa ấy thì các bạn cần có phải vào cổng chính của nhà trước,vậy cỗng nhà ở đây chính là DispatcherServlet.Tuy nhiên với spring,sau này các bạn học ngoài dispatcherservlet thì có còn có các cổng khác khi học đến phần Security của spring.  Vậy tóm lại các bạn cứ hiểu là với DispatcherServlet nó như là một bộ điều khiển của spring,tấnhiên nó sẽ xử lý các yêu cầu của người dùng.Nói đến đây bạn nào không hiểu mình cũng bó tay nha ^^.
  • ModelAndView: Lớp này nắm giữ cả Model và View trong spring MVC,tất là theo mô hình MVC (Model -View – Controller).Vậy mới ModelAndView thì nó bao gồm cả Model và View.
  • SimpleFormController: Nó cung cấp cấu hình cho form và success view. Nó tự động resubmits đến form view  trong trường hợp có lỗi, và trả về success view khi đã hợp lệ.

Dưới đây là sơ đồ cấu trúc đơn giản của mô hình spring MVC:

 

Sơ đồ cấu trúc đơn giản của mô hình spring MVC:
Sơ đồ cấu trúc đơn giản của mô hình spring MVC:

 

Quy trình trình tự các sự kiện xảy ra khi có một yêu cầu gửi đến :

Để bạn đọc hiểu được các trình tự của các sự kiện xảy ra khi một yêu cầu nào đó của người dùng gửi đến thì nó sẽ xử lý như thế nào,mời các bạn làm theo trình tự bên dưới :

  1. Các DispatcherServlet cấu hình trong file web.xml nhận được yêu cầu.
  2. DispatcherServlet sẽ tìm đến controller thích hợp dựa vào sự trợ giúp của HandlerMapping và sau đó nó sẽ gọi đến controller liên kết.(Handler Mapping nhằm xác định đúng Controller nào xử lý yêu cầu này).
  3. Sau đó controller này sẽ thực thi business logic (việc xử lý trong controller này là do chúng ta viết code) và sau đó sẽ trả về ModelAndView object cho DispatcherServlet.
  4. DispatcherServlet sẽ xác định view từ ModelAndView object
  5. Sau đó DispatcherServlet thông qua mô hình object để gửi cho View
  6. View đã nhận được kết quả thì Dispatcher Servlet sẽ gửi đầu ra đến cho Servlet container và cuối cùng Servlet container sẽ gửi kết quả cho người dùng.

 

 

Như vậy để hiểu rõ hơn nữa chúng ta sẽ xem luồng đi của spring mvc nhé :

Luồng đi của spring mvc :

Spring MVC là yêu cầu định hướng và DispatcherServlet xử lý yêu cầu từ khách hàng và sau đó Dispatcher yêu cầu đến controller. Nó tích hợp chặt chẽ với các container IoC Spring và cho phép các nhà phát triển sử dụng mọi tính năng của Spring framework.

Dưới đây là sơ đồ dòng chảy trong spring MVC :

Sơ đồ dòng chảy trong spring MVC :
Sơ đồ dòng chảy trong spring MVC :

 

Dưới đây là giải thích về một url được ánh xạ khi một khách hàng truy cập URL trên máy chủ :

  1. Spring Font Controller (DispatcherServlet) nhận yêu cầu nó sẽ tìm đến Handler Mapping thích hợp
  2. Handler Mapping sẽ ánh xạ yêu cầu của client đến controller thích hợp.
  3. Sau đó DispatcherServlet sẽ gửi yêu cầu đến Controller thích hợp.
  4. Sau khi thực hiện tiến trình từ yêu cầu của client, nó thực thi các logic được xác định trong controller và cuối cùng trả về đối tượng ModelAndView.
  5. Dựa trên các giá trị trong ModelAndView Controller mà nó sẽ view, có thể là JSP, FreeMaker,tiles do file cấu hình của chúng ta config.
  6. Controller sẽ gửi đến cho Servlet container và cuối cùng Servlet container sẽ gửi kết quả cho người dùng

Để có thể hiệu rõ thì ở bài tiếp theo tôi sẽ làm một ví dụ về một chương trình đơn giản theo mô hình mvc của spring.Các bạn có thể  theo dõi ở đây. 


Bài viết có tham khảo tại trang :

http://www.roseindia.net/