最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC的五大核心組件用法及說明

 更新時(shí)間:2023年03月27日 09:52:58   作者:半度納  
這篇文章主要介紹了SpringMVC的五大核心組件用法及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringMVC的五大核心組件

  • DispatcherServlet -前端控制器,用于統(tǒng)一接收請求并分發(fā),組織處理請求的流程
  • HandlerMapping -映射請求路徑與處理請求的控制器
  • Controller -由開發(fā)人員創(chuàng)建的,實(shí)際處理請求的控制器
  • ModelAndView -Controllera組件處理完請求后得到的結(jié)果,由數(shù)據(jù)與視圖名稱組成
  • ViewResolver -視圖解析器,可根據(jù)視圖名稱(由ModelAndView:返回)確定需要使用的視圖組件

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、DispatcherServlet

DispatcherServlet:通常稱之為“前端控制器”,用于統(tǒng)一接收請求并分發(fā),組織處理請求的流程        

-如果是使用web.xml文件配置項(xiàng)目的Web環(huán)境的項(xiàng)目,需要顯式的在web.xml配置它,例如映射的請求路徑,并確保它是Web容器(例如Tomcat)在啟動(dòng)時(shí)就初始化的,并在初始化時(shí)會(huì)加載Spring環(huán)境        

-如果是使用Spring注解來配置Spring MVC環(huán)境的項(xiàng)目,則不需要直接配置它,而是通過自定義一個(gè)AbstractAnnotationConfigDispatcherServletlnitializer的子類來間接的配置,例如配置它映射的請求路徑        

-如果是使用Spring Booti框架的Web項(xiàng)目,你甚至可以不需要知道它的存在,默認(rèn)映射的請求路徑是/*,當(dāng)然,如果認(rèn)為有必要的話,也可以配置為其它值

二、HandlerMapping

HandlerMapping:它是一個(gè)接口,Spring MVC框架內(nèi)置了簡單的實(shí)現(xiàn)類:

SimpleUrlHandlerMapping,用于映射請求路徑與處理請求的控制器,但是,在實(shí)際應(yīng)用中,并不會(huì)直接使用這個(gè)實(shí)現(xiàn),而是使用@RequestMapping注解,或進(jìn)階的@PostMapping、@DeleteMapping、@PutMapping、@GetMapping等注解,直接配置請求路徑與處理請求的方法的映射關(guān)系

三、Controller

Controller:是實(shí)際處理請求的控制器        

是開發(fā)者自行編寫的,通常有多個(gè),一般根據(jù)需要處理的請求所涉及的核心數(shù)據(jù)類型來區(qū)分,例如與用戶相關(guān)的請求則創(chuàng)建UserController,與訂單相關(guān)的請求則創(chuàng)建OrderController…        

這些類必須放在組件掃描的包或其子孫包下,并添加@Controller注解,或添加@RestController注解,由于主流的開發(fā)模式是服務(wù)器端向客戶端響應(yīng)正文,通常使用的是@RestController        

一般還會(huì)在這些類的聲明之前添加@RequestMapping注解,以統(tǒng)一設(shè)計(jì)URL中的前綴路徑        

每個(gè)控制器類中將有若干個(gè)處理請求的方法

四、ModelAndView

ModelAndView:Controller組件處理完請求后得到的結(jié)果,由數(shù)據(jù)與視圖名稱組成        

在實(shí)際開發(fā)中,由于Spring MVC提供了更加便捷的API,通常并不直接使用這種類型作為方法的返回值,當(dāng)需要轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),可以在方法的參數(shù)列表中添加ModelMap對象用于封裝需要轉(zhuǎn)發(fā)的數(shù)據(jù),并使用String類型的返回值表示視圖名稱,如果需要重定向,則返回以redirect:作為前綴的Stringl即可        

主流的開發(fā)模式是服務(wù)器端向客戶端響應(yīng)正文,完全不需要使用該類型的對象

五、ViewResolver

ViewResolver:視圖解析器,可根據(jù)視圖名稱確定需要使用的視圖組件        

Spring MVC框架內(nèi)置了簡單的實(shí)現(xiàn)類:InternalResourceViewResolver,當(dāng)使用JSP文件作為視圖時(shí)將使用它,主要配置prefix7和suffix這2個(gè)屬性,SpringMVC框架會(huì)將orefixl的值、控制器返回的視圖名稱、suffix的值拼接起來,以確定JSP文件的位置并使用        

使用Thymeleaf的模版頁面作為視圖組件時(shí),則配置ThymeleafViewResolver,配置思想大致相當(dāng),但需要另外配置Thymeleaf的模版引擎和模版解析器        

主流的開發(fā)模式是服務(wù)器端向客戶端響應(yīng)正文,完全不需要使用該組件

SpringMVC框架的核心組件及其流程圖

SpringMVC框架

1.作用:解決了V-C交互問題,也就是試圖與控制器的交互問題。

在原生的Java EE技術(shù)中,使用Servlet作為項(xiàng)目中的控制器,用于接收用戶的請求,并給予響應(yīng)結(jié)果。

這種做法最大的問題在于:每個(gè)Servlet對應(yīng)一個(gè)請求路徑,例如:LoginServlet處理login.do的請求,而RegisterServlet處理register.do的請求,所以,會(huì)導(dǎo)致Servlet數(shù)量太多,不便于管理(無論是從源文件的數(shù)量,還是從配置文件的內(nèi)容),且對象太對而占用大量的內(nèi)存空間的問題,并且,在請求的處理過程中,還存在許多操作不簡單的做法!

2.SpringMVC核心組件及其流程圖。

1.DispatcherServlet:前端控制器,負(fù)責(zé)接收所配置的所有請求(假設(shè)配置為*.do,則它將接收所有以.do為后綴的請求),并負(fù)責(zé)分發(fā)這些請求;

2.HandlerMapping:記錄了請求路徑與處理請求的Controller或其方法的對應(yīng)關(guān)系;

3.Controller:控制器,負(fù)責(zé)處理具體的請求,每個(gè)項(xiàng)目中可能有若干個(gè)Controller組件,每個(gè)Controller組件中可以有若干個(gè)處理請求的方法;

4.ModelAndView:控制器處理完請求后得到的結(jié)果,該結(jié)果可以包含數(shù)據(jù)與視圖名稱;

5.ViewResovler:視圖解析器,可以根據(jù)視圖名稱來確定具體的視圖組件。 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring AOP中使用args表達(dá)式的方法示例

    Spring AOP中使用args表達(dá)式的方法示例

    這篇文章主要介紹了Spring AOP中使用args表達(dá)式的方法,結(jié)合實(shí)例形式分析了spring面向切面AOP中使用args表達(dá)式具體步驟、相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • EasyCode整合mybatis-plus的配置詳解

    EasyCode整合mybatis-plus的配置詳解

    本文主要介紹了EasyCode整合mybatis-plus的配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 基于SpringBoot實(shí)現(xiàn)郵箱找回密碼的代碼示例

    基于SpringBoot實(shí)現(xiàn)郵箱找回密碼的代碼示例

    本文主要介紹了如何基于SpringBoot實(shí)現(xiàn)郵箱找回密碼,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Java中內(nèi)核線程理論及實(shí)例詳解

    Java中內(nèi)核線程理論及實(shí)例詳解

    在本篇文章里小編給大家整理了一篇關(guān)于Java中內(nèi)核線程理論及實(shí)例詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • 非常全面的IReport的使用教程

    非常全面的IReport的使用教程

    iReport 是為JasperReports Library和JasperReports Server設(shè)計(jì)的報(bào)表可視化設(shè)計(jì)器。本教程給大家詳細(xì)介紹IReport的使用解析,感興趣的朋友一起看看吧
    2021-10-10
  • springboot static關(guān)鍵字真能提高Bean的優(yōu)先級(厲害了)

    springboot static關(guān)鍵字真能提高Bean的優(yōu)先級(厲害了)

    這篇文章主要介紹了springboot static關(guān)鍵字真能提高Bean的優(yōu)先級(厲害了),需要的朋友可以參考下
    2020-07-07
  • java使用lambda表達(dá)式對List集合進(jìn)行操作技巧(JDK1.8)

    java使用lambda表達(dá)式對List集合進(jìn)行操作技巧(JDK1.8)

    這篇文章主要介紹了java使用lambda表達(dá)式對List集合進(jìn)行操作技巧適用jdk1.8,感興趣的朋友跟著小編一起看看實(shí)現(xiàn)代碼吧
    2018-06-06
  • 詳解java中各類鎖的機(jī)制

    詳解java中各類鎖的機(jī)制

    這篇文章為大家總結(jié)了java中常見的鎖(互斥鎖、讀寫鎖、公平鎖與非公平鎖等)的機(jī)制以及如何使用,文中示例代碼講解詳細(xì),需要的可以學(xué)習(xí)一下
    2021-12-12
  • Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn)

    Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn)

    這篇文章主要介紹了Intellij Idea中進(jìn)行Mybatis逆向工程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Java?Web實(shí)現(xiàn)簡易圖書管理系統(tǒng)

    Java?Web實(shí)現(xiàn)簡易圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java?Web實(shí)現(xiàn)簡易圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評論

华亭县| 金乡县| 衡阳市| 叶城县| 保康县| 辽源市| 大连市| 拜城县| 靖安县| 武川县| 宁海县| 虞城县| 会同县| 东丽区| 惠来县| 丰都县| 阿勒泰市| 苏尼特左旗| 三明市| 奉贤区| 泌阳县| 苏尼特右旗| 元氏县| 彭水| 涟源市| 南丰县| 来宾市| 鹤壁市| 马公市| 神农架林区| 临澧县| 塔城市| 铜陵市| 杭锦旗| 淮安市| 诸暨市| 合江县| 安顺市| 西乡县| 唐海县| 凤庆县|