SpringMVC的五大核心組件用法及說(shuō)明
SpringMVC的五大核心組件
DispatcherServlet
-前端控制器,用于統(tǒng)一接收請(qǐng)求并分發(fā),組織處理請(qǐng)求的流程HandlerMapping
-映射請(qǐng)求路徑與處理請(qǐng)求的控制器Controller
-由開發(fā)人員創(chuàng)建的,實(shí)際處理請(qǐng)求的控制器ModelAndView
-Controllera組件處理完請(qǐng)求后得到的結(jié)果,由數(shù)據(jù)與視圖名稱組成ViewResolver
-視圖解析器,可根據(jù)視圖名稱(由ModelAndView:返回)確定需要使用的視圖組件
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、DispatcherServlet
DispatcherServlet:通常稱之為“前端控制器”,用于統(tǒng)一接收請(qǐng)求并分發(fā),組織處理請(qǐng)求的流程
-如果是使用web.xml文件配置項(xiàng)目的Web環(huán)境的項(xiàng)目,需要顯式的在web.xml配置它,例如映射的請(qǐng)求路徑,并確保它是Web容器(例如Tomcat)在啟動(dòng)時(shí)就初始化的,并在初始化時(shí)會(huì)加載Spring環(huán)境
-如果是使用Spring注解來(lái)配置Spring MVC環(huán)境的項(xiàng)目,則不需要直接配置它,而是通過(guò)自定義一個(gè)AbstractAnnotationConfigDispatcherServletlnitializer的子類來(lái)間接的配置,例如配置它映射的請(qǐng)求路徑
-如果是使用Spring Booti框架的Web項(xiàng)目,你甚至可以不需要知道它的存在,默認(rèn)映射的請(qǐng)求路徑是/*,當(dāng)然,如果認(rèn)為有必要的話,也可以配置為其它值
二、HandlerMapping
HandlerMapping:它是一個(gè)接口,Spring MVC框架內(nèi)置了簡(jiǎn)單的實(shí)現(xiàn)類:
SimpleUrlHandlerMapping,用于映射請(qǐng)求路徑與處理請(qǐng)求的控制器,但是,在實(shí)際應(yīng)用中,并不會(huì)直接使用這個(gè)實(shí)現(xiàn),而是使用@RequestMapping注解,或進(jìn)階的@PostMapping、@DeleteMapping、@PutMapping、@GetMapping等注解,直接配置請(qǐng)求路徑與處理請(qǐng)求的方法的映射關(guān)系
三、Controller
Controller:是實(shí)際處理請(qǐng)求的控制器
是開發(fā)者自行編寫的,通常有多個(gè),一般根據(jù)需要處理的請(qǐng)求所涉及的核心數(shù)據(jù)類型來(lái)區(qū)分,例如與用戶相關(guān)的請(qǐng)求則創(chuàng)建UserController,與訂單相關(guān)的請(qǐng)求則創(chuàng)建OrderController…
這些類必須放在組件掃描的包或其子孫包下,并添加@Controller注解,或添加@RestController注解,由于主流的開發(fā)模式是服務(wù)器端向客戶端響應(yīng)正文,通常使用的是@RestController
一般還會(huì)在這些類的聲明之前添加@RequestMapping注解,以統(tǒng)一設(shè)計(jì)URL中的前綴路徑
每個(gè)控制器類中將有若干個(gè)處理請(qǐng)求的方法
四、ModelAndView
ModelAndView:Controller組件處理完請(qǐng)求后得到的結(jié)果,由數(shù)據(jù)與視圖名稱組成
在實(shí)際開發(fā)中,由于Spring MVC提供了更加便捷的API,通常并不直接使用這種類型作為方法的返回值,當(dāng)需要轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),可以在方法的參數(shù)列表中添加ModelMap對(duì)象用于封裝需要轉(zhuǎn)發(fā)的數(shù)據(jù),并使用String類型的返回值表示視圖名稱,如果需要重定向,則返回以redirect:作為前綴的Stringl即可
主流的開發(fā)模式是服務(wù)器端向客戶端響應(yīng)正文,完全不需要使用該類型的對(duì)象
五、ViewResolver
ViewResolver:視圖解析器,可根據(jù)視圖名稱確定需要使用的視圖組件
Spring MVC框架內(nèi)置了簡(jiǎn)單的實(shí)現(xiàn)類:InternalResourceViewResolver,當(dāng)使用JSP文件作為視圖時(shí)將使用它,主要配置prefix7和suffix這2個(gè)屬性,SpringMVC框架會(huì)將orefixl的值、控制器返回的視圖名稱、suffix的值拼接起來(lái),以確定JSP文件的位置并使用
使用Thymeleaf的模版頁(yè)面作為視圖組件時(shí),則配置ThymeleafViewResolver,配置思想大致相當(dāng),但需要另外配置Thymeleaf的模版引擎和模版解析器
主流的開發(fā)模式是服務(wù)器端向客戶端響應(yīng)正文,完全不需要使用該組件
SpringMVC框架的核心組件及其流程圖
SpringMVC框架
1.作用:解決了V-C交互問(wèn)題,也就是試圖與控制器的交互問(wèn)題。
在原生的Java EE技術(shù)中,使用Servlet作為項(xiàng)目中的控制器,用于接收用戶的請(qǐng)求,并給予響應(yīng)結(jié)果。
這種做法最大的問(wèn)題在于:每個(gè)Servlet對(duì)應(yīng)一個(gè)請(qǐng)求路徑,例如:LoginServlet處理login.do的請(qǐng)求,而RegisterServlet處理register.do的請(qǐng)求,所以,會(huì)導(dǎo)致Servlet數(shù)量太多,不便于管理(無(wú)論是從源文件的數(shù)量,還是從配置文件的內(nèi)容),且對(duì)象太對(duì)而占用大量的內(nèi)存空間的問(wèn)題,并且,在請(qǐng)求的處理過(guò)程中,還存在許多操作不簡(jiǎn)單的做法!
2.SpringMVC核心組件及其流程圖。
1.DispatcherServlet
:前端控制器,負(fù)責(zé)接收所配置的所有請(qǐng)求(假設(shè)配置為*.do
,則它將接收所有以.do
為后綴的請(qǐng)求),并負(fù)責(zé)分發(fā)這些請(qǐng)求;
2.HandlerMapping
:記錄了請(qǐng)求路徑與處理請(qǐng)求的Controller
或其方法的對(duì)應(yīng)關(guān)系;
3.Controller
:控制器,負(fù)責(zé)處理具體的請(qǐng)求,每個(gè)項(xiàng)目中可能有若干個(gè)Controller
組件,每個(gè)Controller
組件中可以有若干個(gè)處理請(qǐng)求的方法;
4.ModelAndView
:控制器處理完請(qǐng)求后得到的結(jié)果,該結(jié)果可以包含數(shù)據(jù)與視圖名稱;
5.ViewResovler
:視圖解析器,可以根據(jù)視圖名稱來(lái)確定具體的視圖組件。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)郵件發(fā)送QQ郵箱帶附件
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)郵件發(fā)送QQ郵箱帶附件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Java中的位運(yùn)算符號(hào)解讀(&、|、^、~、<<、>>、>>>)
這篇文章主要介紹了Java中的位運(yùn)算符號(hào)(&、|、^、~、<<、>>、>>>),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08MyBatis-Plus自定義通用的方法實(shí)現(xiàn)
MP自帶的條件構(gòu)造器雖然很強(qiáng)大,有時(shí)候也避免不了寫稍微復(fù)雜一點(diǎn)業(yè)務(wù)的sql,本文主要介紹了MyBatis-Plus自定義通用的方法實(shí)現(xiàn),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05SpringBoot數(shù)據(jù)庫(kù)查詢超時(shí)配置詳解
這篇文章主要介紹了SpringBoot數(shù)據(jù)庫(kù)查詢超時(shí)配置,超時(shí)配置可以避免長(zhǎng)時(shí)間占用數(shù)據(jù)庫(kù)連接,提高系統(tǒng)的響應(yīng)速度和吞吐量,還可以快速的反饋可以提升用戶體驗(yàn),避免用戶因長(zhǎng)時(shí)間等待而感到挫敗,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-11-11Spring Boot中l(wèi)ombok的安裝與使用詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot中l(wèi)ombok安裝與使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09