1. 程式人生 > >《深入理解SpringMVC思想》

《深入理解SpringMVC思想》

前言:

       SpringMVC是一種基於MVC架構的用於簡化web應用程式開發的應用開發框架,它是spring的一個模組,與spring緊密結合,無需中間整合層來整合,它和struts2一樣都是表現層框架。在web模型中,mvc是很流行的框架,通過將model、view、controller分離,減少開發,減少出錯,方便組內開發人員之間的協同工作。

正文:

     一。SpringMVC應用的開發步驟

          1.在web.xml中定義前端控制器Dispatcherservlet

<servlet>
   <servlet-name>action</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath:web/spring/spring.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
</servlet>

          Dispatcherservlet是SpringMVC的核心入口類,負責處理分發客戶端傳送的請求,使用檢視來最終相應客戶端的請求。struts1的核心入口類是ActionServlet,struts2的核心入口類是StrutsParperAndExecuteFilter。

          2.如果是POST請求,則需要開發表單提交的JSP頁面,如果是GET請求,則可以跳過這一步。

          3.定義處理使用者請求的Handle類,通過實現Controller介面或者使用@Controller註解

          4.當servlet攔截使用者請求後,讓servlet知道建立哪個Controller介面的例項有兩種解決方案:

        (1)利用xml配置檔案

<!--配置Handle,對映“/hello請求”>
<bean name="/hello" class="org.fkit.controller.HelloController"/>

       (2)Spring2.5之後,推薦使用註解來配置Handle

@Controller
public class DatumManagerController {}

        5.編寫檢視資源

        當Handler處理使用者請求結束後,通常會返回一個ModelAndView物件,該物件中包含返回的檢視名或檢視名和模型,這個檢視名就代表需要顯示的物理檢視資源。如果Handler需要把一些資料傳給檢視資源,就可以通過模型物件。

     二。SpringMVC執行的流程?

         說明:

                1.使用者向伺服器傳送請求,請求被SpringMVC的核心入口類Dispatcherservlet截獲

            2.Dispatcherservlet對請求的URL(統一資源定位符)進行解析,得到URI(資源識別符號),根據該URI,呼叫HandlerMapping得到Handler的所有相關的物件,包括Handler物件以及該物件的攔截器,包裝成HandlerExecutionChain物件統一返回給Dispatcherservlet

                3.Dispatcherservlet根據得到的Handler,選擇一個合適的HandlerAdapter,處理實際的業務邏輯

                4.提取請求中的模型資料,開始執行Handler,在填充Handler的入參過程中,根據配置,spring會做一些額外的工作:

(1)訊息轉換    (2)資料轉換  (3)資料格式化    (4)資料驗證

               5.Hander執行完畢之後,會向Dispatcherservlet返回一個ModerlAndView物件,該物件應該包含檢視名或檢視名和模型。

                6.根據返回的ModelAndView,選擇一個合適的ViewReslover(檢視解析器)返回給Dispatcherservlet

                7.ViewReslover結合model和view渲染檢視

                8.Dispatcherservlet將檢視渲染結果返回給客戶端。

結語: