Spring MVC 核心類和介面

平凡的java夢發表於2020-11-30

目錄

一、Spring MVC 核心類和介面

二、 Spring MVC 工作流程

一、Spring MVC 核心類和介面:

1.DispatcherServlet介面 – 前置控制器

2.HandlerMapping介面 – 處理請求的對映`

1).SimpleUrlHandlerMapping 通過配置檔案,把一個URL對映到Controller

2).DefaultAnnotationHandlerMapping 通過註解,把一個URL對映到Controller類上

3.HandlerAdapter介面 – 處理請求的對映

1).AnnotationMethodHandlerAdapter類 通過註解,把一個URL對映到Controller類的方法上

4.Controller介面 – 控制器`

1).新增了 @Controller註解的類就可以擔任控制器(Action)的職責,所以我們並沒有用到這個介面。

5.HandlerInterceptor介面–攔截器`

注:自定義的實現這個介面,來完成攔截的器的工作。

6.ViewResolver介面 --檢視

1).UrlBasedViewResolver類 通過配置檔案,把一個檢視名交給到一個View來處理

2).InternalResourceViewResolver類 通過配置檔案,把一個檢視名交給到一個View來處理,並且加入了JSTL的支援

7.HandlerExceptionResolver介面 --異常

1).SimpleMappingExceptionResolver 異常處理類`

二、Spring MVC 工作流程:

在最簡單的SpringMVC應用程式中,控制器是唯一的你需要在java web部署描述檔案(即Web.xml檔案)中配置Servlet。Spring MVC控制器—通常稱做DispatcherServlet,實現了前端控制器設計模式,並且每個web請求必須通過他以便它能夠管理請求的生命週期。

當一個web請求傳送到SpringMVC應用程式,dispatcher servlet首先接受請求,然後他組織哪些在 Spring Web應用程式上下文配置的(例如實際請求處理控制器和檢視解析器)或者使用註解配置的元件,所有者這些都需要處理該請求。

1.HandlerMapping的使用主要分為兩步:註冊和查詢。

註冊是根據配置檔案中的配置將一個字串和一個Controller類以<key,value>的形式存入到Map中,這個key就是對應的url中的某個欄位。

查詢就是HandlerMapping根據url中的的某個欄位,在Map中以這個欄位為key值對應的Controller類,並將Controller類封裝成一個HandlerExecutionChain物件,HandlerExecutionChain中除了有Controller物件外,還有一組攔截器。

2.Controller 是負責處理由DispatcherServlet 分發的請求,它把使用者請求的資料經過業務處理層處理之後封裝成一個Model ,然後再把該Model 返回給對應的View 進行展示

  1. ViewResolver的作用就是通過解析MdoelAndView,將MdoelAndView中的邏輯檢視名變為一個真正的View物件,並將MdoelAndView中的Model取出。

4.View的作用就是在獲取到ViewResolve傳來的View和Model,對Model進行渲染,通過View物件找到要展示給使用者的物理檢視,將渲染後的檢視展示給使用者。用很直白的話將就是將資料通過request儲存起來,找到要展示給使用者的頁面,將這些資料放在頁面中,並將頁面呈現給使用者。

在Spring3.0中定義一個控制器類,這個類必須標有@Controller註解。

當有@Controller註解的控制器收到一個請求時,它會尋找一個合適的handler方法去處理這個請求。這就需要控制器通過一個或多個handler對映去把每個請求對映到handler方法。為了這樣做,一個控制器類的方法需要被@RequestMapping註解裝飾,使它們成為handler方法。handler方法處理完請求後,它把控制權委託給檢視名與handler方法返回值相同的檢視。為了提供一個靈活的方法,一個handler方法的返回值並不代表一個檢視的實現而是一個邏輯檢視,即沒有任何副檔名。你可以將這些邏輯檢視對映到正確的實現,並將這些實現寫入到上下文檔案,這樣你就可以輕鬆的更改檢視層程式碼甚至不用修改請求handler類的程式碼。為一個邏輯名稱匹配正確的檔案是檢視解析器的責任。一旦控制器類已將一個檢視名稱解析到一個檢視實現。它會根據檢視實現的設計來渲染對應物件。

相關文章