精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

主播大秀视频在线观看一区二区| 国产精品一区二区av白丝下载| 偷窥自拍亚洲色图精选| 日本韩国精品一区二区在线观看| 亚洲一区高清| 欧美综合视频在线| 日韩专区一卡二卡| 欧美成人在线免费视频| 亚洲精品在线视频免费观看| 精品自拍视频| 激情成人在线视频| 婷婷视频在线播放| 青青青免费视频在线2| 老司机午夜精品99久久| 97国产精品免费视频| 自拍偷拍第9页| 欧美亚洲国产日韩| 欧美一区二区免费观在线| 日本精品免费在线观看| 成a人片在线观看| 久久蜜桃一区二区| www.成人av| 亚洲一级在线播放| 国产欧美欧美| 欧美老女人在线视频| 国产高清一区二区三区四区| 国产精品15p| 91麻豆精品国产无毒不卡在线观看| 国产在线观看福利| 国产后进白嫩翘臀在线观看视频| 国产精品久久久久一区二区三区| 久久综合狠狠综合久久综青草| a级片在线免费看| 久久精品国产亚洲一区二区三区| 欧美专区在线观看| 成年人午夜视频| 黄页网站一区| 久久99精品视频一区97| 日韩精品一区二区三区在线视频| 国产探花一区二区| 亚洲男人天堂古典| 波多野结衣福利| 欧美日韩一本| 精品视频在线观看日韩| 在线看黄色的网站| 国产精品自在线拍| 亚洲国产精品人人爽夜夜爽| 伊人久久一区二区三区| 成人av影音| 538prom精品视频线放| 黄色片视频在线| 巨胸喷奶水www久久久免费动漫| 日韩欧美在线网址| 玩弄中年熟妇正在播放| av电影院在线看| 亚洲综合精品久久| 国产高清不卡无码视频| 欧美被日视频| 中文字幕一区不卡| 欧美一区二区三区四区在线观看地址 | 日韩不卡一二三区| 欧美亚洲视频一区二区| 在线免费观看毛片| 亚洲国产精品第一区二区| 欧美超级免费视 在线| 亚洲人与黑人屁股眼交| 精品国产一区二区三区四区 | 国产99视频精品免视看7| 国产专区第一页| 国产一区导航| 日本成人黄色片| 高潮毛片又色又爽免费| 久久男女视频| 国产精品丝袜久久久久久不卡| 天天爱天天做天天爽| 久久久久久穴| 91在线播放国产| 国产黄a三级三级看三级| 国产99久久久精品| 国产精品一区免费观看| 天堂中文在线看| 久久亚洲捆绑美女| 日本免费高清不卡| 色的视频在线免费看| 自拍视频在线观看一区二区| 国产91porn| av伦理在线| 色一情一伦一子一伦一区| 日韩手机在线观看视频| 伊人久久大香| 精品对白一区国产伦| 一级国产黄色片| 精品视频免费| 久久中文字幕视频| 日本少妇xxxx动漫| 久久午夜视频| 国产精品久久久久久久久久久久久久| 亚洲中文字幕在线观看| 国产一区二区免费在线| 精品国产综合久久| 黄色国产在线| 中文文精品字幕一区二区| 国产精品久久久影院| 国产欧洲在线| 欧美中文字幕一区二区三区亚洲| 三级黄色片免费看| 四虎影视精品| 久久成人av网站| 91看片在线播放| 美女诱惑一区二区| 国产伦精品一区二区三区视频免费| 色资源在线观看| 国产精品五月天| 欧美亚洲一二三区| 四虎精品在线观看| 日韩精品中文字幕久久臀| 国产又黄又粗的视频| 欧美日本不卡高清| 国产高清在线不卡| 粉嫩av一区二区夜夜嗨| 国产免费观看久久| 激情五月宗合网| 99视频有精品高清视频| 国产视频欧美视频| 啪啪一区二区三区| 日韩精品视频网站| 国产视频一区二区不卡| 国产黄a三级三级三级av在线看| 欧美午夜片欧美片在线观看| 国产一级二级av| 日韩免费视频| 日本久久精品视频| 色婷婷在线视频| 亚洲柠檬福利资源导航| 97公开免费视频| 国产精品黄网站| 久久天天躁狠狠躁夜夜躁| www.com亚洲| av成人动漫在线观看| 好色先生视频污| 成人黄色免费短视频| 亚洲国产精品久久久久久| 国产在线免费看| 日韩高清不卡一区二区三区| 国产主播一区二区三区四区| 日本三级在线观看网站| 3atv一区二区三区| 无码一区二区三区在线| 欧美另类亚洲| 风间由美久久久| 午夜激情在线| 欧美一区二区三区男人的天堂| 国产91丝袜美女在线播放| 国产精品美女久久久浪潮软件| 99高清视频有精品视频| 在线观看电影av| 91麻豆精品国产91久久久资源速度 | 久久精品国内一区二区三区| 欧美在线视频二区| 碰碰在线视频| 日韩精品中文字幕在线播放| 国产成人无码精品久在线观看| 成人亚洲一区二区一| 国产一区 在线播放| 日韩一二三区| 欧美黄色片在线观看| 91亚洲国产成人久久精品麻豆 | frxxee中国xxx麻豆hd| 青青草国产精品亚洲专区无| 欧美性xxxx69| 国产经典一区| 最近中文字幕mv在线一区二区三区四区| 精品成人无码久久久久久| 国产网站一区二区三区| 国产一二三四在线视频| 久久中文字幕二区| 99c视频在线| 日韩精品美女| 亚洲欧美精品suv| 蜜臀尤物一区二区三区直播| 国产精品麻豆欧美日韩ww| 成 人 黄 色 小说网站 s色| 99精品综合| 成人动漫在线视频| 欧美a级在线观看| 亚洲午夜av久久乱码| 亚洲午夜在线播放| 成人欧美一区二区三区| 亚洲综合av在线播放| 亚洲一区二区日韩| 国产一区二区精品免费| 日韩pacopacomama| 久久精品99国产精品酒店日本| 国产成人a人亚洲精品无码| 一区二区三区加勒比av| 在线观看日韩精品视频| 免费看日韩精品| 免费观看亚洲视频| 亚洲欧洲色图| 亚洲aⅴ日韩av电影在线观看| 黄色的视频在线观看| 亚洲第一区中文99精品| 中文字幕在线观看1| 亚洲精品免费在线| 国产熟妇久久777777| 精品一区二区三区视频| 97在线免费视频观看| 成人影视亚洲图片在线| 91久久大香伊蕉在人线| 黄色综合网址| 久久成人免费视频| 日韩国产福利| 日韩区在线观看| 免费无码国产精品| 亚洲一区二区欧美日韩| 人人妻人人澡人人爽| 岛国精品一区二区| 午夜剧场在线免费观看| 99re国产精品| 熟女视频一区二区三区| 国产日产精品_国产精品毛片| 99久久久精品免费观看国产 | av播放在线| 亚洲韩国青草视频| 国产乱色精品成人免费视频| 欧美日韩在线看| 国产精品theporn动漫| 国产精品毛片高清在线完整版| 一区二区视频观看| 国产a精品视频| 国产成人美女视频| 视频在线观看一区| 激情深爱综合网| 黄色精品免费| 欧美性受黑人性爽| 婷婷激情综合| 亚洲第一导航| 久久99视频| 好看的日韩精品| 欧美成人精品一级| 成人免费视频a| 懂色aⅴ精品一区二区三区| 欧美又大又硬又粗bbbbb| 久久五月精品| 欧美成人免费网| 久草免费在线| 日韩在线免费高清视频| 国产女人在线观看| 亚洲欧美综合区自拍另类| 性感美女一级片| 亚洲国产成人精品女人久久久| 性一交一乱一精一晶| 欧美精品乱码久久久久久| 99热这里只有精品在线观看| 欧美精品18+| 国产又大又黄又爽| 欧美人与z0zoxxxx视频| 亚洲图片中文字幕| 91麻豆精品国产91久久久使用方法| 在线视频播放大全| 欧美日韩大陆在线| 91亚洲精品国偷拍自产在线观看| 欧日韩精品视频| 中文字幕在线观看视频免费| 欧美在线影院一区二区| 国产日韩在线免费观看| 欧美丝袜丝交足nylons| ,一级淫片a看免费| 在线播放视频一区| 99国产精品欲| 5858s免费视频成人| 日韩中文字幕免费在线观看| 亚洲精品按摩视频| 欧美18xxxxx| 中文字幕久久久av一区| 日本三级视频在线播放| 精品少妇v888av| 女人让男人操自己视频在线观看| 国产精品久久不能| 成人av在线播放| 99国产高清| 亚洲黄色录像| 亚洲精品二区| 欧美精品网站| 欧美色图另类小说| 青青青伊人色综合久久| 99精品视频免费版的特色功能| 99精品久久久久久| 粉嫩精品久久99综合一区| 亚洲精品国久久99热| 日本熟妇毛耸耸xxxxxx| 色综合激情久久| 91精品人妻一区二区三区果冻| 日韩一区国产二区欧美三区| 国产99对白在线播放| 亚洲欧美一区二区三区久久| 嫩草在线视频| 国语自产精品视频在线看一大j8| 欧美片第1页| 亚洲aaaaaa| 精品中文字幕一区二区三区av| 亚洲午夜精品一区二区三区| av成人天堂| 毛片毛片毛片毛| 99精品欧美一区二区三区小说| 萌白酱视频在线| 五月天国产精品| 亚洲网站在线免费观看| 日韩欧美国产综合在线一区二区三区| 国产在线资源| 欧美精品videosex极品1| 成人网ww555视频免费看| 99免费在线观看视频| 成人3d精品动漫精品一二三| 国产精品va在线观看无码| 免费在线日韩av| 国产精品成人99一区无码| 91丨porny丨蝌蚪视频| 亚洲色图综合区| 色综合久久久久久久| 亚洲国产www| 亚洲天堂影视av| 九色porny丨入口在线| 国产福利久久精品| 国产精品久久久久久麻豆一区软件 | 精品久久久久久亚洲综合网站| 欧美老肥妇做.爰bbww| 国产色a在线| 97在线看福利| 日韩中文字幕无砖| 亚洲视频电影| 日韩精品电影一区亚洲| 日韩精品人妻中文字幕有码 | 国产黄a三级三级| 色婷婷亚洲婷婷| 性插视频在线观看| 性亚洲最疯狂xxxx高清| 亚洲国产视频二区| 做爰高潮hd色即是空| 青青草91视频| 六月婷婷七月丁香| 欧美图片一区二区三区| 亚洲 另类 春色 国产| 久久国产精品网站| 综合久草视频| 综合视频免费看| 日本在线不卡一区| 欧美在线一级片| 精品久久中文字幕久久av| 亚洲精选一区二区三区| 欧美乱大交xxxxx| 日韩欧美中文字幕在线视频| 一本一生久久a久久精品综合蜜| 青娱乐精品视频| 亚洲精品国产精品国自产网站| 欧美性色综合网| av一区在线观看| 国产精品美女免费看| 欧美女王vk| 热久久精品免费视频| 国产日韩精品一区二区浪潮av| 九九热国产视频| 亚洲天堂成人在线视频| 日韩高清中文字幕一区二区| 日韩精彩视频| 奇米精品一区二区三区在线观看 | 国产欧美精品一区二区色综合| 男人天堂2024| 亚洲欧美激情四射在线日| av亚洲一区| 一区二区三区国| 九九视频精品免费| 日本a级片视频| 精品国产电影一区二区| 国产高清自产拍av在线| 免费久久99精品国产自| 日韩精品福利网| 欧美做爰爽爽爽爽爽爽| 精品国产区一区| 性欧美freesex顶级少妇| 欧美精品中文字幕一区二区| 日本在线不卡视频| 日韩欧美123区| 欧美一卡二卡在线| jizz内谢中国亚洲jizz| 亚洲免费视频一区| 国产一区二区三区久久悠悠色av| 国产亚洲精久久久久久无码77777| 亚洲精品国产美女| 99精品在免费线偷拍| 日韩欧美亚洲精品| 国产乱人伦偷精品视频不卡| 国产精品久久久免费视频| 在线观看久久久久久| 久久免费精品| 日本精品免费在线观看| 国产女同性恋一区二区| www久久久com| 日韩免费精品视频| 一区二区电影在线观看|