成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

一、需求開發(fā)過程

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

開發(fā)過程

1)配置DispatcherServlet前端控制器

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

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

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

二、Spring MVC 請求處理流程

流程說明

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

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

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

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

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

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

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

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

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

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

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

三、Spring MVC 九大組件

  • HandlerMapping(處理器映射器)

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

  • HandlerAdapter(處理器適配器)

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

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

  • HandlerExceptionResolver

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

  • ViewResolver

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

  • RequestToViewNameTranslator

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

  • LocaleResolver

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

  • ThemeResolver

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

  • MultipartResolver

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

  • FlashMapManager

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

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

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

2023-08-14 08:42:41

2022-04-26 08:41:54

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

2023-03-17 16:44:44

Channel進(jìn)程模型

2024-08-09 08:17:07

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

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

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

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構(gòu)

2022-07-11 09:00:37

依賴配置文件Mybati

2025-02-04 11:51:51

2023-08-01 12:51:18

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

2024-01-02 12:05:26

Java并發(fā)編程

2024-09-27 10:27:50

2024-03-04 07:41:18

SpringAOPOOP?

2024-01-02 07:04:23

2023-10-10 11:04:11

Rust難點(diǎn)內(nèi)存

2024-05-06 00:00:00

InnoDBView隔離

2024-07-31 08:39:45

Git命令暫存區(qū)

2023-01-30 09:01:54

圖表指南圖形化

2022-07-08 09:27:48

CSSIFC模型
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 97伊人 | 亚洲一区视频在线 | 欧美激情欧美激情在线五月 | 国产特级毛片 | 你懂的国产 | 免费观看一级毛片 | 久久久久国产一区二区三区四区 | 日韩一区二区在线播放 | 国产免费观看久久黄av片涩av | 国产极品91 | 亚洲高清在线 | 亚洲区一区二 | 日韩久久成人 | 最新国产在线 | 四虎永久 | 一区二区av | 久久精品视频网站 | 在线视频中文字幕 | 一区二区三区四区在线 | 国产91亚洲精品 | 久久精品免费观看 | 国产三级一区二区 | 91精品国模一区二区三区 | 久久久久国产视频 | 九九久久精品视频 | 韩国av网站在线观看 | 午夜成人免费视频 | 欧美一区二区三区在线免费观看 | 日本一本在线 | 久久久久久黄 | 日本成人综合 | 欧美中文字幕在线观看 | 国产激情99| 久久精品中文 | 久久99网| 网站国产| 亚洲国产一区二区在线 | 精品国产一区二区三区日日嗨 | 99久久精品免费看国产四区 | 久久国产精品一区二区三区 | 国产日韩一区二区 |