偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Spring MVC工作流程,你學(xué)會(huì)了嗎?

開(kāi)發(fā) 架構(gòu)
ServletRequestAttributes.getRequest()方法獲得)的屬性O(shè)UTPUT_FLASH_MAP_ATTRIBUTE中,這樣在重定向之后的Handler中Spring就會(huì)自動(dòng)將其設(shè)置到Model中,在顯示訂單信息的?面上就可以直接從Model中獲取數(shù)據(jù)。

一、需求開(kāi)發(fā)過(guò)程

需求:前端瀏覽器請(qǐng)求url:http://localhost:8080/demo/handle01,前端?面顯示后臺(tái)服務(wù)器的時(shí)間

開(kāi)發(fā)過(guò)程

1)配置DispatcherServlet前端控制器

2)開(kāi)發(fā)處理具體業(yè)務(wù)邏輯的Handler(@Controller、@RequestMapping)

3)xml配置文件配置controller掃描,配置springmvc三大件

4)將xml文件路徑告訴springmvc(DispatcherServlet)

二、Spring MVC 請(qǐng)求處理流程

流程說(shuō)明

第一步:用戶發(fā)送請(qǐng)求至前端控制器DispatcherServlet

第二步:DispatcherServlet收到請(qǐng)求調(diào)用HandlerMapping處理器映射器

第三步:處理器映射器根據(jù)請(qǐng)求Url找到具體的Handler(后端控制器),生成處理器對(duì)象及處理器攔截器(如果有則生成)一并返回DispatcherServlet

第四步:DispatcherServlet調(diào)用HandlerAdapter處理器適配器去調(diào)用Handler

第五步:處理器適配器執(zhí)行Handler

第六步:Handler執(zhí)行完成給處理器適配器返回ModelAndView

第七步:處理器適配器向前端控制器返回 ModelAndView,ModelAndView 是SpringMVC 框架的一個(gè)底層對(duì)象,包括 Model 和 View

第八步:前端控制器請(qǐng)求視圖解析器去進(jìn)行視圖解析,根據(jù)邏輯視圖名來(lái)解析真正的視圖。

第九步:視圖解析器向前端控制器返回View

第十步:前端控制器進(jìn)行視圖渲染,就是將模型數(shù)據(jù)(在 ModelAndView 對(duì)象中)填充到 request 域

第十一步:前端控制器向用戶響應(yīng)結(jié)果

三、Spring MVC 九大組件

  • HandlerMapping(處理器映射器)

HandlerMapping 是用來(lái)查找 Handler 的,也就是處理器,具體的表現(xiàn)形式可以是類(lèi),也可以是方法。比如,標(biāo)注了@RequestMapping的每個(gè)方法都可以看成是一個(gè)Handler。Handler負(fù)責(zé)具體實(shí)際的請(qǐng)求處理,在請(qǐng)求到達(dá)后,HandlerMapping 的作用便是找到請(qǐng)求相應(yīng)的處理器Handler 和 Interceptor.

  • HandlerAdapter(處理器適配器)

HandlerAdapter 是一個(gè)適配器。因?yàn)?Spring MVC 中 Handler 可以是任意形式的,只要能處理請(qǐng)求即可。

但是把請(qǐng)求交給Servlet 的時(shí)候,由于Servlet 的方法結(jié)構(gòu)都是doService(HttpServletRequest req,HttpServletResponse resp)形式的,要讓固定的 Servlet 處理方法調(diào)用 Handler 來(lái)進(jìn)行處理,便是 HandlerAdapter 的職責(zé)。

  • HandlerExceptionResolver

HandlerExceptionResolver 用于處理 Handler 產(chǎn)生的異常情況。它的作用是根據(jù)異常設(shè)置ModelAndView,之后交給渲染方法進(jìn)行渲染,渲染方法會(huì)將 ModelAndView 渲染成?面。

  • ViewResolver

ViewResolver即視圖解析器,用于將String類(lèi)型的視圖名和Locale解析為View類(lèi)型的視圖,只有一個(gè)resolveViewName()方法。從方法的定義可以看出,Controller層返回的String類(lèi)型視圖名viewName 最終會(huì)在這里被解析成為View。View是用來(lái)渲染?面的,也就是說(shuō),它會(huì)將程序返回的參數(shù)和數(shù)據(jù)填入模板中,生成html文件。ViewResolver 在這個(gè)過(guò)程主要完成兩件事情:ViewResolver 找到渲染所用的模板(第一件大事)和所用的技術(shù)(第二件大事,其實(shí)也就是找到視圖的類(lèi)型,如JSP)并填入?yún)?shù)。默認(rèn)情況下,Spring MVC會(huì)自動(dòng)為我們配一個(gè)
InternalResourceViewResolver,是針對(duì) JSP 類(lèi)型視圖的。

  • RequestToViewNameTranslator

RequestToViewNameTranslator 組件的作用是從請(qǐng)求中獲取 ViewName.因?yàn)?ViewResolver 根據(jù)ViewName 查找 View,但有的 Handler 處理完成之后,沒(méi)有設(shè)置 View,也沒(méi)有設(shè)置 ViewName,便要通過(guò)這個(gè)組件從請(qǐng)求中查找 ViewName。

  • LocaleResolver

ViewResolver 組件的 resolveViewName 方法需要兩個(gè)參數(shù),一個(gè)是視圖名,一個(gè)是 Locale。LocaleResolver 用于從請(qǐng)求中解析出 Locale,比如中國(guó) Locale 是 zh-CN,用來(lái)表示一個(gè)區(qū)域。這個(gè)組件也是 i18n 的基礎(chǔ)。

  • ThemeResolver

ThemeResolver 組件是用來(lái)解析主題的。主題是樣式、圖片及它們所形成的顯示效果的集合。Spring MVC 中一套主題對(duì)應(yīng)一個(gè) properties文件,里面存放著與當(dāng)前主題相關(guān)的所有資源,如圖片、CSS樣式等。創(chuàng)建主題非常簡(jiǎn)單,只需準(zhǔn)備好資源,然后新建一個(gè)“主題名.properties”并將資源設(shè)置進(jìn)去,放在classpath下,之后便可以在?面中使用了。SpringMVC中與主題相關(guān)的類(lèi)有ThemeResolver、ThemeSource和Theme。ThemeResolver負(fù)責(zé)從請(qǐng)求中解析出主題名,ThemeSource根據(jù)主題名找到具體的主題,其抽象也就是Theme,可以通過(guò)Theme來(lái)獲取主題和具體的資源。

  • MultipartResolver

MultipartResolver 用于上傳請(qǐng)求,通過(guò)將普通的請(qǐng)求包裝成
MultipartHttpServletRequest 來(lái)實(shí)現(xiàn)。MultipartHttpServletRequest 可以通過(guò) getFile() 方法 直接獲得文件。如果上傳多個(gè)文件,還可以調(diào)用 getFileMap()方法得到Map<FileName,F(xiàn)ile>這樣的結(jié)構(gòu),MultipartResolver 的作用就是封裝普通的請(qǐng)求,使其擁有文件上傳的功能。

  • FlashMapManager

FlashMap 用于重定向時(shí)的參數(shù)傳遞,比如在處理用戶訂單時(shí)候,為了避免重復(fù)提交,可以處理完post請(qǐng)求之后重定向到一個(gè)get請(qǐng)求,這個(gè)get請(qǐng)求可以用來(lái)顯示訂單詳情之類(lèi)的信息。這樣做雖然可以規(guī)避用戶重新提交訂單的問(wèn)題,但是在這個(gè)?面上要顯示訂單的信息,這些數(shù)據(jù)從哪里來(lái)獲得呢?因?yàn)橹囟ㄏ驎r(shí)沒(méi)有傳遞參數(shù)這一功能的,如果不想把參數(shù)寫(xiě)進(jìn)URL(不推薦),那么就可以通過(guò)FlashMap來(lái)傳遞。只需要在重定向之前將要傳遞的數(shù)據(jù)寫(xiě)入請(qǐng)求(可以通過(guò)

ServletRequestAttributes.getRequest()方法獲得)的屬性O(shè)UTPUT_FLASH_MAP_ATTRIBUTE中,這樣在重定向之后的Handler中Spring就會(huì)自動(dòng)將其設(shè)置到Model中,在顯示訂單信息的?面上就可以直接從Model中獲取數(shù)據(jù)。FlashMapManager 就是用來(lái)管理 FalshMap 的。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2023-08-14 08:42:41

2022-04-26 08:41:54

JDK動(dòng)態(tài)代理方法

2024-08-09 08:17:07

SSH服務(wù)器架構(gòu)

2023-03-17 16:44:44

Channel進(jìn)程模型

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機(jī)器學(xué)習(xí)模型

2022-07-11 09:00:37

依賴配置文件Mybati

2025-02-04 11:51:51

2024-09-27 10:27:50

2024-01-19 08:25:38

死鎖Java通信

2023-07-26 13:11:21

ChatGPT平臺(tái)工具

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2021-10-30 18:56:12

Spring工作框架

2022-07-08 08:17:48

Spring接口配置

2024-01-02 07:04:23

2024-03-04 07:41:18

SpringAOPOOP?

2024-03-06 08:28:16

設(shè)計(jì)模式Java

2022-12-06 07:53:33

MySQL索引B+樹(shù)

2023-01-31 08:02:18

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)