Spring MVC 核心類和介面
目錄
一、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 進行展示
- 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類的程式碼。為一個邏輯名稱匹配正確的檔案是檢視解析器的責任。一旦控制器類已將一個檢視名稱解析到一個檢視實現。它會根據檢視實現的設計來渲染對應物件。
相關文章
- MVC下的DAO介面類和SERVICE介面類區別?MVC
- 30個類手寫Spring核心原理之MVC對映功能(4)SpringMVC
- Mock測試你的Spring MVC介面MockSpringMVC
- 換一種方式編寫 Spring MVC 介面SpringMVC
- Spring Cloud Alibaba Sentinel 主要原理和核心類介紹SpringCloud
- Spring MVC和Spring Boot的區別 - hackernoonMVCSpring Boot
- Spring核心原理分析之MVC九大元件(1)SpringMVC元件
- Shiro和Spring MVC、Mybatis整合教程SpringMVCMyBatis
- Spring MVC 轉發和重定向SpringMVC
- spring - mvcSpringMVC
- spring、spring MVC、spring BootMVCSpring Boot
- 抽象類和介面抽象
- spring mvc interceptorsSpringMVC
- spring - mvc - @ScheduledSpringMVC
- spring - mvc - @ValidSpringMVC
- Spring MVC之redirect、forward和普通跳轉SpringMVCForward
- Strust2和Spring MVC的區別RustSpringMVC
- 手寫 Spring 事務、IOC、DI 和 MVCSpringMVC
- 介面和抽象類 (abstract)抽象
- Spring Boot + Mybatis + Spring MVC環境配置(四):MVC框架搭建Spring BootMyBatisMVC框架
- Spring MVC學習筆記和SSH的整合SpringMVC筆記
- 使用Java和Spring MVC構建Web應用JavaSpringMVCWeb
- 使用 Spring Boot 和 @WebMvcTest 測試 MVC Web ControllerSpring BootWebMVCController
- Spring MVC學習SpringMVC
- Spring5 MVCSpringMVC
- Spring MVC基礎SpringMVC
- Spring MVC1SpringMVC
- Spring MVC 簡述SpringMVC
- Spring MVC應用SpringMVC
- tomcat + spring mvc原理外傳:spring mvc與前端的糾葛TomcatSpringMVC前端
- 轉向Kotlin——類和介面Kotlin
- java中抽象類和介面Java抽象
- 介面和抽象類詳解抽象
- Spring MVC原始碼(三) ----- @RequestBody和@ResponseBody原理解析SpringMVC原始碼
- Spring MVC ControllerAdvice深入解析SpringMVCController
- Spring MVC 入門程式SpringMVC
- Spring MVC for beginners 筆記SpringMVC筆記
- 深入淺出Spring MVCSpringMVC