精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring核心原理分析之MVC九大組件

開發(fā) 前端
Spring MVC九大組件在DispatcherServlet的init()方法中初始化,下面我詳細介紹一下Spring MVC九大組件的名稱和作用。

1 什么是Spring MVC

Spring MVC 是 Spring 提供的一個基于 MVC 設(shè)計模式的輕量級 Web 開發(fā)框架,本質(zhì)上相當于 Servlet。Spring MVC 角色劃分清晰,分工明細。由于 Spring MVC 本身就是 Spring 框架的一部分,可以說和 Spring 框架是無縫集成。性能方面具有先天的優(yōu)越性,是當今業(yè)界最主流的 Web 開發(fā)框架,最熱門的開發(fā)技能。首先從一個由Spring提供的DispatcherServlet開始,重寫了Serlvet的init()方法、service()方法和destroy()方法,SpringMVC九大組件在DispatcherServlet的init()方法中初始化,在service()方法中執(zhí)行。下面,我們先來看Spring MVC九大組件的初始化。

2 SpringMVC九大組件名稱解釋

Spring MVC九大組件在DispatcherServlet的init()方法中初始化,下面我詳細介紹一下Spring MVC九大組件的名稱和作用。

具體詳細介紹如下:

2.1 MultipartResolver

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

2.2 LocaleResolver

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

2.3 ThemeResolver

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

2.4 HandlerMapping

HandlerMapping是用來查找Handler的,也就是處理器,具體的表現(xiàn)形式可以是類,也可以是方法。比如,標注了@RequestMapping的每個方法都可以看成一個Handler。Handler負責實際的請求處理,在請求到達后,HandlerMapping的作用便是找到請求相應的處理器Handler和Interceptor。

2.5 HandlerAdapter

從名字上看,HandlerAdapter是一個適配器。因為Spring MVC中Handler可以是任意形式的,只要能夠處理請求便可。但是把請求交給Servlet的時候,由于Servlet的方法結(jié)構(gòu)都是doService(HttpServletRequest req, HttpServletResponse resp)形式的,要讓固定的Servlet處理方法調(diào)用Handler來進行處理,這一步工作便是HandlerAdapter要做的事。

2.6 HandlerExceptionResolver

從組件的名字上看,HandlerExceptionResolver是用來處理Handler產(chǎn)生的異常情況的組件。具體來說,此組件的作用是根據(jù)異常設(shè)置ModelAndView,之后交給渲染方法進行渲染,渲染方法會將ModelAndView渲染成頁面。不過要注意,HandlerExceptionResolver只用于解析對請求做處理階段產(chǎn)生的異常,渲染階段的異常不歸它管,這也是Spring MVC 組件設(shè)計的一大原則—分工明確、互不干涉。

2.7 RequestToViewNameTranslator

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

2.8 ViewResolver

ViewResolver即視圖解析器,相信大家對這個組件應該很熟悉了。通常在Spring MVC的配置文件中,都會配上一個實現(xiàn)類來進行視圖解析。這個組件的主要作用是將String類型的視圖名和Locale解析為View類型的視圖,只有一個resolveViewName()方法。從方法的定義可以看出,Controller層返回的String類型的視圖名viewName最終會在這里被解析成為View。View是用來渲染頁面的,也就是說,它會將程序返回的參數(shù)和數(shù)據(jù)填入模板中,生成HTML文件。ViewResolver在這個過程中主要做兩件大事:ViewResolver會找到渲染所用的模板(第一件大事)和所用的技術(shù)(第二件大事,其實也就是找到視圖的類型,如JSP)并填入?yún)?shù)。默認情況下,Spring MVC會為我們自動配置一個InternalResourceViewResolver,是針對JSP類型視圖的。

2.9 FlashMapManager

說到FlashMapManager組件,得先說一下FlashMap。FlashMap用于重定向時的參數(shù)傳遞,比如在處理用戶訂單時,為了避免重復提交,可以處理完post請求后重定向到一個get請求,這個get請求可以用來顯示訂單詳情之類的信息。這樣做雖然可以規(guī)避用戶重新提交訂單的問題,但是在這個頁面上要顯示訂單的信息,這些數(shù)據(jù)從哪里獲取呢?因為重定向是沒有傳遞參數(shù)這一功能的,如果不想把參數(shù)寫進URL(其實也不推薦這么做,除了URL有長度限制,把參數(shù)都直接暴露也不安全),那么就可以通過FlashMap來傳遞。只需要在重定向之前將要傳遞的數(shù)據(jù)寫入請求(可以通過ServletRequestAttributes.getRequest()方法獲得)的屬性O(shè)UTPUT_FLASH_MAP_ATTRIBUTE中,這樣在重定向之后的Handler中Spring就會自動將其設(shè)置到Model中,在顯示訂單信息的頁面上就可以直接從Model中獲得數(shù)據(jù)。FlashMapManager就是用來管理FlashMap的。

3 Spring MVC關(guān)鍵組件的執(zhí)行流程

Spring MVC九大組件的執(zhí)行在DispatcherServlet的service()方法中完成。在這里,我重點介紹幾個關(guān)鍵組件HandlerMapping、HandlerAdapter、ViewResolver在service()方法中的執(zhí)行流程,具體調(diào)用分為以下幾個步驟:

1、HandlerMapping回到調(diào)用HandlerAdapter

2、HandlerAdapter會返回ModelAndView

3、ModelAndView根據(jù)用戶傳入?yún)?shù)得到ViewResolvers

4、ViewResolvers會將用戶傳入的參數(shù)封裝為View,交給引擎進行渲染。

下面給大家分享一張Spring MVC關(guān)鍵組件的執(zhí)行流程圖,以幫助大家更好地理解:

 

注意:上圖中有大家最熟悉的兩個類:ModelAndView和View類并不屬于Spring MVC九大組件之列。

4 Spring MVC優(yōu)化建議

前面我們已經(jīng)對Spring MVC的工作原理和源碼進行了分析,在這個過程中有幾個優(yōu)化點。

1. Controller如果能保持單例模式,盡量使用單例模式

這樣可以減小創(chuàng)建對象和回收對象的開銷。也就是說,如果Controller的類變量和實例變量可以以方法形參聲明就盡量以方法形參聲明,不要以類變量和實例變量聲明,這樣可以避免線程安全問題。

2. 處理請求的方法中的形參務必加上@RequestParam注解

這樣可以避免Spring MVC使用asm框架讀取.class文件獲取方法參數(shù)名。即便Spring MVC對讀取出的方法參數(shù)名進行了緩存,如果能不讀取.class文件當然更好。

3. 緩存URL

在閱讀源碼的過程中,我們發(fā)現(xiàn)Spring MVC并沒有對處理URL的方法進行緩存,也就是說,每次都要根據(jù)請求URL去匹配Controller中的方法的URL,如果把URL和方法的關(guān)系緩存起來,會不會帶來性能上的提升呢?不幸的是,負責解析URL和方法對應關(guān)系的ServletHandlerMethodResolver是一個私有的內(nèi)部類,不能直接通過繼承該類增強代碼,必須在代碼后重新編譯。當然,如果將URL緩存起來,必須考慮緩存的線程安全問題。

 

責任編輯:姜華 來源: Tom彈架構(gòu)
相關(guān)推薦

2021-03-26 11:00:50

SpringMVC組件接口

2022-09-28 16:37:59

SpringMVC框架

2020-05-21 13:25:43

Spring組件架構(gòu)

2012-05-16 11:24:29

System Cent

2021-12-27 08:27:17

SpringMVC面試

2012-02-03 08:59:37

微軟云計算System Cent

2025-10-09 08:39:47

2025-09-01 00:02:27

2023-08-01 23:04:40

Spring編程AOP

2024-04-23 00:00:00

SpringBoot監(jiān)聽器

2021-09-05 07:35:58

lifecycleAndroid組件原理

2021-09-10 15:16:19

Kubernetes核心組件運維

2024-09-13 10:11:38

2023-02-23 08:15:33

Spring異常處理機制

2023-02-09 08:01:12

核心組件非阻塞

2021-10-19 17:52:56

數(shù)據(jù)分析標簽

2021-12-14 07:43:52

Spring核心原理環(huán)境準備

2022-11-04 08:39:46

SpringWebFlux

2021-12-15 09:17:12

Spring依賴注入面試題

2009-06-22 11:54:28

Spring MVCSpringframe
點贊
收藏

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

日韩欧美一区二区三区在线| 成人欧美一区二区三区在线播放| 高清欧美性猛交xxxx| 中文字幕在线国产| 亚洲美女久久精品| 国产精品少妇自拍| 福利视频一区二区三区| 久久精品视频5| 婷婷中文字幕一区| 亚洲国产一区二区三区四区| 男女午夜激情视频| 日本免费在线观看| 国产成人av福利| 777精品视频| 成人在线观看小视频| 玖玖玖免费嫩草在线影院一区| 欧美中文字幕亚洲一区二区va在线 | 色综合电影网| 91国内精品久久久| 亚洲美女网站| 久久精品国产一区二区电影| 精品一区二区视频在线观看| 性欧美video另类hd尤物| 午夜视频一区二区三区| 欧洲在线视频一区| 亚洲精品国产一区二| 蜜桃视频一区二区三区在线观看| 久久免费在线观看| 成年人一级黄色片| 日韩欧美午夜| 亚洲毛片在线看| 91精产国品一二三| av在线成人| 欧美日韩在线电影| 日本精品www| 麻豆视频在线看| 一区2区3区在线看| a级网站在线观看| av色图一区| 久久久久久黄色| 韩国成人av| 亚洲乱熟女一区二区| 黑人巨大精品欧美一区| 国产精品色视频| 91视频在线视频| 国产模特精品视频久久久久| 久久久免费在线观看| 日本黄区免费视频观看| 国产成人3p视频免费观看| 亚洲第一免费播放区| 免费黄色在线播放| 亚洲福利合集| 欧美v日韩v国产v| 日本女人性视频| 成人黄色91| 555www色欧美视频| 国产在线观看中文字幕| 亚洲高清国产拍精品26u| 在线视频一区二区三区| 天天碰免费视频| 亚洲精品.com| 欧美性色黄大片| 国产精品拍拍拍| 欧美黑粗硬大| 欧美一区二区三区视频免费播放| 精品国产乱码久久久久久1区二区| 亚洲伦理网站| 日韩欧美在线123| 亚洲一级Av无码毛片久久精品| 在线视频亚洲欧美中文| 亚洲第一国产精品| 熟女少妇一区二区三区| 加勒比久久综合| 日韩在线观看免费高清完整版| 天天看天天摸天天操| 欧美激情 亚洲a∨综合| 久久久久中文字幕| 波多野结衣爱爱| 麻豆精品视频在线观看视频| 亚洲free性xxxx护士hd| 东京干手机福利视频| 91美女视频网站| 日韩一区二区三区高清| 麻豆tv入口在线看| 亚洲私人黄色宅男| www.夜夜爱| 欧美美女日韩| 91精品国产一区二区三区香蕉| 一起草最新网址| 网红女主播少妇精品视频| 一级做a爰片久久毛片美女图片| 人人干在线观看| 日韩视频二区| 国产日韩欧美成人| 欧美一级特黄aaaaaa| 国产亚洲va综合人人澡精品| 亚洲一区影院| 老司机深夜福利在线观看| 欧美自拍丝袜亚洲| 国产在线不卡av| 久久国产精品亚洲人一区二区三区| 蜜臀久久99精品久久久久久宅男| 在线观看黄网站| 激情综合网av| 久久这里精品国产99丫e6| 蜜芽在线免费观看| 色综合天天综合给合国产| 天天看片天天操| 欧美日韩123| 欧美日韩高清在线观看| 一级特黄免费视频| 成人精品视频一区| 亚洲国产午夜伦理片大全在线观看网站 | 国产精品自在欧美一区| 欧美一级二级三级| 啦啦啦中文在线观看日本| 欧美亚洲日本国产| 中文字幕在线播放一区| 99久久精品费精品国产风间由美| 欧美一区二区三区免费视| av综合在线观看| 日本一区二区三区四区| 久草资源站在线观看| 老司机亚洲精品一区二区| 亚洲最新av在线网站| 日本在线观看中文字幕| 国产精品香蕉一区二区三区| 亚洲mv在线看| 色8久久影院午夜场| 日韩av在线导航| 国产一级在线视频| 国产一区二区导航在线播放| 亚洲在线观看一区| 日韩在线观看不卡| 亚洲美女av电影| 久久亚洲精品国产| 成人免费视频网站在线观看| 91精品国产吴梦梦| 成人国产精品一区二区网站| 俺也去精品视频在线观看| 国产精品午夜一区二区| 久久色成人在线| 成年人免费在线播放| 美女亚洲一区| 日韩美女免费观看| 免费在线性爱视频| 色综合久久中文字幕综合网| 无套内谢大学处破女www小说| 精品1区2区3区4区| 国产精品美女黄网| 9999精品成人免费毛片在线看| 精品日韩欧美在线| 久久久久久久久久91| 国产99久久精品| 大胆欧美熟妇xx| 国产伦理久久久久久妇女 | 久久久久久国产精品免费播放| 国内精品写真在线观看| 国产人妻互换一区二区| 欧美一区一区| 久久久久久久久久国产| 少妇精品高潮欲妇又嫩中文字幕 | 亚洲影院在线播放| 久久精品视频在线免费观看| 538在线视频观看| 欧美手机在线| 91色在线观看| 国产盗摄在线视频网站| 日韩电影大片中文字幕| 欧美一区二区三区不卡视频| 日本一区二区三区免费乱视频| 视频二区在线播放| 一区二区三区在线观看免费| 粉嫩av四季av绯色av第一区| 麻豆视频在线看| 色一情一乱一区二区| 亚洲一区二区色| 亚洲制服丝袜在线| 免费a级黄色片| 久久丁香综合五月国产三级网站| 人人妻人人澡人人爽精品欧美一区| 精品一区视频| 国产91精品青草社区| 成人动漫在线免费观看| 日韩一区二区三区观看| 91九色丨porny丨肉丝| 国产精品污www在线观看| 中文字幕亚洲日本| 免费亚洲一区| 一级特黄妇女高潮| 青青草久久爱| 91在线看www| 成人短视频app| 欧美超级免费视 在线| 欧洲视频在线免费观看| 欧美一三区三区四区免费在线看 | 欧美午夜精品久久久| 日韩一区二区三区四区在线| 99re热这里只有精品免费视频 | 国产91精品一区二区麻豆亚洲| 少妇性饥渴无码a区免费| 99久久夜色精品国产亚洲96| 久久99久久99精品蜜柚传媒| 国产欧美视频在线| 国产成人在线视频| 国产蜜臀av在线播放| 在线视频一区二区| 男人天堂一区二区| 欧美日韩国产一二三| 成人免费a视频| 有码一区二区三区| 人成免费在线视频| 久久久精品综合| 黑人玩弄人妻一区二区三区| 免费高清在线视频一区·| 国产中文字幕视频在线观看| 亚洲精品va| 亚洲精品一品区二品区三品区 | 国产一级在线播放| 专区另类欧美日韩| 微拍福利一区二区| av一区二区久久| 午夜诱惑痒痒网| 蜜臀久久久久久久| 国产精品无码一本二本三本色| 黄色一区二区三区四区| 国产人妻互换一区二区| 97在线精品| 亚洲视频小说| av中字幕久久| 欧美一区2区三区4区公司二百| 果冻天美麻豆一区二区国产| 亚洲va欧美va在线观看| 亚洲人体在线| 国产欧美最新羞羞视频在线观看| 欧美成a人片在线观看久| 9.1国产丝袜在线观看| www成人免费观看| 欧美精品九九久久| 美女尤物在线视频| 色综合91久久精品中文字幕 | 极品美女一区二区三区| 欧美日韩亚洲一区二区三区在线观看 | 日本电影一区二区三区| 亚洲素人在线| 欧美欧美一区二区| 九九视频免费观看视频精品| 欧美18视频| 精品国产91| 亚洲国产日韩欧美| 99精品在线免费在线观看| 亚洲精品一区二区三区四区五区| 日韩成人精品一区二区| 亚洲欧洲精品一区二区| 97在线精品| 99er在线视频| 999亚洲国产精| 日韩av三级在线| 天堂一区二区在线| 五月天婷婷激情视频| 麻豆成人91精品二区三区| 亚洲一区二区三区观看| 国产一区二区在线观看视频| 18禁一区二区三区| 不卡影院免费观看| mm131美女视频| 中文字幕欧美日本乱码一线二线| 蜜桃av免费观看| 亚洲精品乱码久久久久久| 国产在线观看成人| 色综合天天做天天爱| 中文字幕日韩经典| 91麻豆精品国产自产在线| 丰满大乳国产精品| 亚洲男人av电影| 伦xxxx在线| 久久免费视频在线| 韩国精品主播一区二区在线观看| 国产在线高清精品| 成功精品影院| 色噜噜狠狠一区二区三区| 91成人精品视频| 欧美黑人经典片免费观看| 久久久蜜桃一区二区人| 天堂av.com| aaa国产一区| 国产成人免费在线观看视频| 亚洲午夜在线电影| 无码久久精品国产亚洲av影片| 欧美一级二级三级蜜桃| 日本天堂影院在线视频| 久久精品在线视频| 日本不良网站在线观看| 国产欧美一区二区白浆黑人| 国内自拍欧美| 综合网五月天| 午夜亚洲视频| 欧美又黄又嫩大片a级| av一区二区不卡| 日本一级二级视频| 91久久线看在观草草青青| 精品国产av鲁一鲁一区| 亚洲社区在线观看| 国产高清在线a视频大全| 国产精品美女无圣光视频| 9l视频自拍蝌蚪9l视频成人| 亚洲a∨一区二区三区| 国产一区二区三区的电影| 超碰中文字幕在线观看| 日本一区免费视频| 日韩av电影网址| 日韩一区二区三区在线观看| 最新国产在线观看| 26uuu亚洲国产精品| 韩国一区二区三区视频| 亚洲电影一二三区| 国产精品主播| 国产视频精品视频| 亚洲免费在线视频| 国产99久久久久久免费看| 亚洲福利视频免费观看| 最新日本在线观看| 国产日韩在线播放| 欧美日韩色图| 国产aaa一级片| 成人av第一页| 久久久久久久国产精品毛片| 日韩一区二区在线看片| 看黄网站在线| 国产裸体写真av一区二区| 国产真实有声精品录音| 日韩av黄色网址| www.色精品| 国产在线精品观看| 精品国内片67194| 影音先锋男人资源在线| 91老司机精品视频| 国产精品88久久久久久| 中文字幕国内自拍| 国产欧美日韩麻豆91| 国产黄网在线观看| 亚洲精品视频久久| 一区一区三区| 欧美凹凸一区二区三区视频 | 中文字幕国产免费| 国产精品久久久久四虎| 在线观看免费高清视频| 深夜精品寂寞黄网站在线观看| abab456成人免费网址| 日韩欧美在线观看强乱免费| 日韩av二区在线播放| 国产精久久一区二区三区| 日本高清成人免费播放| h网站在线免费观看| 国产精品一区二区电影| 国产高清一区二区| 潘金莲一级淫片aaaaa| 亚洲国产综合91精品麻豆| 日本美女一级片| 2019最新中文字幕| 欧美日韩一区二区综合| 日本高清久久久| 亚洲伦理在线精品| 人妻无码一区二区三区久久99| 韩剧1988免费观看全集| 亚洲欧洲免费| 亚洲xxx在线观看| 一区二区三区在线免费播放| 手机在线精品视频| 日韩美女免费观看| 亚洲激情中文在线| 国产麻豆剧传媒精品国产av| 色综合一区二区| 免费人成在线观看播放视频| 99精彩视频| 免费欧美在线| 久久嫩草捆绑紧缚| 精品乱人伦小说| 日韩精品影院| 一区二区三区观看| 成人污视频在线观看| 久久久精品视频网站| 精品国产一区二区三区久久久| 1769国产精品视频| 欧美 日韩精品| 亚洲男人的天堂在线观看| 天天操天天操天天| 国产噜噜噜噜久久久久久久久| 欧美网站在线| 亚洲成人黄色av| 日韩你懂的在线播放| 性欧美videohd高精| 国产精品夜夜夜爽张柏芝| 97久久精品人人做人人爽| 亚洲综合免费视频| 国外成人在线播放| 日韩成人精品一区| 亚洲欧美视频在线播放| 69久久夜色精品国产69蝌蚪网| 妞干网免费在线视频|