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

別背八股了,用這個(gè)故事讓你徹底理解Spring MVC核心機(jī)制!

開發(fā) 前端
Spring MVC 是基于前端控制器(Front Controller)設(shè)計(jì)模式的 Web 框架,它的核心就是 DispatcherServlet,它把請求分發(fā)給真正的處理者(Controller),再將結(jié)果返回給用戶。

開場白:來自面試官的一擊靈魂拷問

說出來你可能不信,我在社招面試的第一輪、第二輪、第三輪,都被問到了這道題:

“你能詳細(xì)說說 Spring MVC 的工作原理嗎?DispatcherServlet 在其中起什么作用?”

聽到這個(gè)問題我心里一緊,嘴上在笑,腦子飛速地回想當(dāng)年背過的知識點(diǎn):“視圖解析器...攔截器...處理器映射...誒,不對,得講順啊!”

這題乍一看不難,但想答得“條理清晰 + 術(shù)語準(zhǔn)確 + 帶點(diǎn)源碼味道”,真不容易。

所以我決定把這篇文章寫出來,給正在準(zhǔn)備面試的你打打氣、補(bǔ)補(bǔ)刀。

先講一個(gè)小故事:我們?yōu)槭裁葱枰?Spring MVC?

設(shè)想你是個(gè)餐廳老板。客戶點(diǎn)菜 -> 廚房做菜 -> 上菜 -> 客戶吃飯。

這個(gè)流程是不是很像我們平時(shí)寫 Web 應(yīng)用的處理流程?

  • 用戶在瀏覽器發(fā)出請求(點(diǎn)菜);
  • 系統(tǒng)需要有人接單并決定誰來做菜(控制器);
  • 根據(jù)客戶點(diǎn)的菜找到做這道菜的廚師(處理器映射);
  • 做好之后上菜(返回視圖);
  • 吃完之后結(jié)賬走人(返回響應(yīng));

而這個(gè)“整個(gè)點(diǎn)菜 - 做菜 - 上菜”的流程管理者,就是我們今天的主角——DispatcherServlet,也就是 Spring MVC 的調(diào)度中心。

正菜來啦:Spring MVC 的整體工作流程

下面是最最核心的一句話總結(jié):

Spring MVC 是基于前端控制器(Front Controller)設(shè)計(jì)模式的 Web 框架,它的核心就是 DispatcherServlet,它把請求分發(fā)給真正的處理者(Controller),再將結(jié)果返回給用戶。

整個(gè)流程分為七步(強(qiáng)烈建議你能畫圖!):

1. 用戶發(fā)起請求(比如訪問 /user/list)

用戶在瀏覽器輸入一個(gè)地址,例如:

圖片

這個(gè)請求先被 Web 容器(Tomcat)接收,再被轉(zhuǎn)交給 Spring MVC 的核心組件——DispatcherServlet。

2. DispatcherServlet 拿到請求,第一件事:找 HandlerMapping

DispatcherServlet 的第一步,是找誰來處理這個(gè)請求。

它會遍歷所有的 HandlerMapping,比如:

  • RequestMappingHandlerMapping
  • BeanNameUrlHandlerMapping
  • 你自定義的 HandlerMapping...

找出一個(gè)與請求匹配的處理器(Handler),也就是我們平時(shí)寫的那個(gè) @Controller + @RequestMapping 的方法。

這時(shí)候,它還會找出與之綁定的 HandlerAdapter(適配器),方便后續(xù)執(zhí)行。

3. DispatcherServlet 調(diào)用 HandlerAdapter 執(zhí)行控制器方法

拿到處理器(Controller 方法)后,并不是 DispatcherServlet 親自去調(diào)的。

而是通過 HandlerAdapter 去執(zhí)行它。這樣做的好處是:可以適配不同類型的處理器(比如普通 Controller、注解式 Controller、HttpRequestHandler等)

執(zhí)行控制器方法時(shí),會用上各種參數(shù)解析器(ArgumentResolvers)幫你自動注入:

  • @RequestParam
  • @PathVariable
  • HttpServletRequest
  • Model、Map...

4. Controller 方法執(zhí)行完畢,返回一個(gè) ModelAndView

這是 Controller 層的出口。

比如你寫了:

圖片圖片

返回的 ModelAndView 里有兩個(gè)東西:

  • View Name(視圖名,如 "userList")
  • Model 數(shù)據(jù)(比如 users)

5. DispatcherServlet 把視圖名交給 ViewResolver 找真正的 View

“userList” 到底是哪一個(gè)頁面?HTML?JSP?Thymeleaf?還是 PDF?

這時(shí)候,就要靠 ViewResolver 來解析了!

Spring 提供了很多 ViewResolver 的實(shí)現(xiàn):

  • InternalResourceViewResolver:用于 JSP
  • ThymeleafViewResolver:用于 Thymeleaf
  • 你也可以自定義視圖解析器

ViewResolver 根據(jù)名字找到了真正的 View 對象,然后交還給 DispatcherServlet。

6. DispatcherServlet 渲染視圖(View.render)

接下來就是 DispatcherServlet 和 View 的合作時(shí)刻了!

DispatcherServlet 把之前從 Controller 那里得到的 Model 數(shù)據(jù)傳給 View,View 會將它“渲染”為 HTML 頁面。

這一步,頁面模板技術(shù)(JSP / Thymeleaf / Freemarker)發(fā)揮了關(guān)鍵作用!

7. 最后一步:響應(yīng)返回給瀏覽器

渲染出來的 HTML 會被寫入 HttpServletResponse,返回給客戶端。

用戶在瀏覽器看到頁面啦!

總結(jié)一下:Spring MVC 的工作流程

一圖勝千言,文字版總結(jié)如下:

圖片圖片

是不是一整個(gè) 前后端協(xié)同、模塊解耦、職責(zé)清晰的系統(tǒng)設(shè)計(jì) 呢?這就是 Spring MVC 牛的地方!

專門講講 DispatcherServlet 的“調(diào)度之道”

好啦,咱們前面把整體流程理了一遍,下面來重點(diǎn)看看面試官特別關(guān)心的 DispatcherServlet。

DispatcherServlet 本質(zhì)上是一個(gè) Servlet,它繼承了 HttpServlet,但是又通過 doDispatch 方法完成了整個(gè) MVC 流程的調(diào)度。

DispatcherServlet 的職責(zé)列表

  • 初始化所有 MVC 組件(在容器啟動時(shí)):

ThemeResolver(主題)

LocaleResolver(多語言)

MultipartResolver(處理上傳)

異常處理器(HandlerExceptionResolver)

ViewResolver

HandlerAdapter

HandlerMapping

  • 接收請求,執(zhí)行 doDispatch() 方法;
  • 找處理器(Controller 方法);
  • 調(diào)用處理器;
  • 找視圖;
  • 渲染視圖;
  • 異常處理;

是不是一個(gè)超級“全能選手”?

DispatcherServlet 的源碼探秘(輕量版)

你要是想進(jìn)一步 impress 面試官,可以提到它的源碼中的 doDispatch() 方法:

圖片圖片

是不是感覺它就像一個(gè)調(diào)度中心,把各個(gè)模塊串聯(lián)起來、執(zhí)行流程控制、處理異常,是整個(gè) Spring MVC 的“心臟”。

面試加分Tips:如何把這道題答得更“香”?

如果你想讓面試官眼前一亮,可以:

  • 先用一句話講清楚:“Spring MVC 是典型的前端控制器模式,DispatcherServlet 是請求分發(fā)的核心”;
  • 然后講清楚七步流程;
  • 再補(bǔ)充 DispatcherServlet 的職責(zé)、常見組件、源碼入口;
  • 最后加上一兩點(diǎn)拓展,比如攔截器、國際化、異常處理等;

比如這樣答:

“Spring MVC 的核心是 DispatcherServlet,它作為前端控制器,負(fù)責(zé)將用戶請求分發(fā)到具體的 Controller 方法。整個(gè)流程包括請求接收、處理器查找、方法執(zhí)行、視圖解析和頁面渲染,形成一個(gè)高內(nèi)聚低耦合的處理鏈。而 DispatcherServlet 是整個(gè)鏈條的調(diào)度中心,貫穿了請求的始末。”

是不是既專業(yè)又完整?

小米的碎碎念:理解比背誦重要

我以前背過各種 MVC 步驟,流程圖都畫過好幾版,但一到面試就卡殼。

后來我把 DispatcherServlet 比作餐廳里的“大堂經(jīng)理”,理解了每一步的角色和職責(zé),才真正明白了它是如何調(diào)度整個(gè)流程的。

所以你不要死記硬背,而是去理解“它為什么這么設(shè)計(jì)”“各個(gè)模塊如何協(xié)作”。

結(jié)尾:反問面試官的一句話

最后分享一個(gè)我在面試時(shí)反問面試官的小技巧:

“我對 Spring MVC 的 DispatcherServlet 比較熟悉,請問你們在實(shí)際項(xiàng)目中有沒有做過定制?比如擴(kuò)展 HandlerAdapter 或 ViewResolver?”

這句話既展示了你對原理的掌握,又體現(xiàn)了你思考落地應(yīng)用的能力,真的很加分!

最后一口飯:記住這三句話!

  • DispatcherServlet 是 Spring MVC 的核心調(diào)度器,負(fù)責(zé)請求的分發(fā)與響應(yīng)的輸出;
  • MVC 的每一步(Mapping、Adapter、View、Render)都解耦且可擴(kuò)展;
  • 理解架構(gòu)設(shè)計(jì)思路,比背套路題更重要!
責(zé)任編輯:武曉燕 來源: 軟件求生
相關(guān)推薦

2024-06-05 10:59:51

2021-11-04 14:32:17

Spring 面試作用域

2025-10-15 03:00:00

2023-11-29 17:28:07

2023-11-28 18:09:49

Java多態(tài)

2023-03-26 10:03:42

2021-10-26 14:40:03

MySQL SQL 語句數(shù)據(jù)庫

2012-07-03 10:57:54

Hadoop核心機(jī)制

2023-01-13 18:04:03

面試題消息中間件

2021-02-07 21:59:39

Java回調(diào)機(jī)制

2021-10-21 14:43:23

Java 語言 Java 基礎(chǔ)

2021-09-07 14:46:42

面試網(wǎng)絡(luò)HTTP 協(xié)議

2021-07-26 14:59:23

面試Redis內(nèi)存數(shù)據(jù)庫

2022-05-06 22:13:56

JVM垃圾收集算法

2021-05-06 07:27:57

面試任務(wù)調(diào)度器

2024-02-21 12:14:00

Gochannel?panic?

2022-09-03 11:36:11

Python文件網(wǎng)絡(luò)

2021-10-26 17:05:55

Redis字符串復(fù)雜度

2025-04-07 11:10:00

Python列表開發(fā)

2011-12-15 09:33:19

Java
點(diǎn)贊
收藏

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

久久久精品网| 91九色综合| eeuss国产一区二区三区| 97婷婷大伊香蕉精品视频| 国产精品无码在线| 韩国成人漫画| 亚洲免费高清视频在线| 久久九九视频| 91在线观看喷潮| 亚洲福利久久| 日韩在线视频播放| 国产精品果冻传媒| 国产精品原创视频| 一区二区成人在线视频| 欧美成人dvd在线视频| 一本一道人人妻人人妻αv| 四虎国产精品成人免费入口| 免费a级毛片在线播放| 国产91丝袜在线观看| 日韩av快播网址| 亚洲色图综合区| 国产va免费精品观看精品视频| 51午夜精品国产| 免费无码国产v片在线观看| 成人亚洲综合天堂| 福利一区福利二区| 91精品国产自产在线观看永久| 青娱乐国产在线视频| av一区二区在线观看| 亚洲精品一区二区三区影院| 亚欧美在线观看| 亚洲人成午夜免电影费观看| 亚洲最大成人网4388xx| 亚洲欧美日韩另类精品一区二区三区 | 欧美精品在线一区| 18啪啪污污免费网站| 国产精品一区二区三区美女| 69p69国产精品| 欧美日韩在线视频一区二区三区| 欧美人动性xxxxz0oz| 国产精品天美传媒| 日韩精品电影网站| 欧美捆绑视频| 91蜜桃视频在线| 国产伦精品一区二区三区在线| 国产精品一区二区免费视频 | 欧美精品电影免费在线观看| 妖精视频在线观看免费 | 国产精品一区二区在线播放 | 亚洲熟妇无码一区二区三区| 亚洲91av| 怡红院av一区二区三区| 在线视频91| 77777影视视频在线观看| 久久精品日产第一区二区三区高清版| 精品无人区一区二区三区竹菊| 动漫av一区二区三区| 精品国产一区二区三区不卡蜜臂| 国产精品chinese| 永久免费毛片在线播放不卡 | 亚洲国产精品传媒在线观看| 欧美午夜视频在线| 欧美午夜黄色| 久久久久久久久免费| 欧美一二三区| 久久久久久青草| 久久精品亚洲精品国产欧美kt∨ | 成人在线视频免费观看| 国产亚洲人成a一在线v站| 欧美 日韩 成人| av在线不卡顿| 久久视频在线视频| 久久久.www| 亚洲欧洲一区二区天堂久久| 日本a级片电影一区二区| 欧美日韩综合一区二区三区| 日韩精品一区第一页| 国产精品丝袜一区二区三区| 国产精品久久久久久免费播放| 国产麻豆精品视频| 亚洲男人的天堂在线| 欧美大片免费看| 亚洲天堂av中文字幕| 91视频一区| 欧美精品在线免费| 日本一区二区不卡在线| 免费日韩视频| 国产在线一区二区三区| 国产成人精品一区二三区四区五区| 国产精品一二一区| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 影音先锋久久资源网| 97碰碰碰免费色视频| 国语对白永久免费| 日本欧美一区二区在线观看| 亚洲精品免费一区二区三区| 无码国产色欲xxxx视频 | 久久精品一区二区三区四区五区| 欧美天堂亚洲电影院在线观看| 欧美在线欧美在线| 中文字幕在线观看视频一区| 国产.欧美.日韩| 久久久五月婷婷| 神马影院一区二区| 性欧美高清come| 在线视频中文字幕一区二区| 免费不卡av网站| 欧美精品momsxxx| 美女久久久久久久| 黄色av网站免费观看| 国产老女人精品毛片久久| 免费精品视频一区| av片在线观看永久免费| 色综合久久中文字幕综合网| 中文字幕无人区二| 日韩精品午夜| 欧美亚洲视频在线看网址| 国产人妻精品一区二区三| 久久综合五月天婷婷伊人| 91免费版看片| a成人v在线| 亚洲精品一区二区三区婷婷月| 日本中文在线视频| 日韩精彩视频在线观看| 国产日韩亚洲精品| free性欧美hd另类精品| 在线观看日产精品| 中文字幕在线播放一区| 综合久久一区| 国产日韩欧美在线观看| 男人的天堂在线视频| 亚洲第一综合色| 在线视频日韩欧美| 成人vr资源| 日本最新高清不卡中文字幕| 免费观看黄一级视频| 日本a在线播放| 久久精品亚洲一区二区三区浴池 | 欧美日韩激情一区二区| 亚洲制服丝袜在线播放| 欧美日本国产| 亚洲va欧美va国产综合剧情| 麻豆系列在线观看| 欧美日韩国产一区| 1024手机在线观看你懂的| 久久久久国产精品一区三寸| 国产中文一区二区| 日本高清在线观看视频| 日韩一二三四区| 久久精品亚洲a| 九色综合国产一区二区三区| 一本色道久久综合亚洲二区三区| 欧美色网在线| 国产亚洲精品美女| 91porny九色| 国产蜜臀97一区二区三区| 欧美黄网站在线观看| 2023国产精华国产精品| 久久91亚洲精品中文字幕奶水| 午夜精品久久久久久久96蜜桃| 亚洲免费大片在线观看| 福利一区福利二区微拍刺激| 91香蕉视频污版| 欧美裸体在线版观看完整版| 国产精品久久一区| 在线免费看av| 欧美一区二区三区日韩视频| 久草视频在线资源| 成人精品国产福利| 久在线观看视频| 精品中文一区| 国产欧美日韩综合精品| 成人看av片| 精品国产91乱码一区二区三区| 日本污视频在线观看| 91视频在线观看免费| 天天摸天天碰天天添| 波多野结衣在线播放一区| 国产日产欧美a一级在线| а√天堂在线官网| 亚洲第一中文字幕在线观看| 中文字幕在线看人| 中文字幕日本不卡| 亚洲最大视频网| 久久电影一区| 伊人久久大香线蕉成人综合网| 视频亚洲一区二区| 欧美亚洲国产另类| 婷婷社区五月天| 成人在线视频免费看| 亚洲色图综合网| 国产毛片久久久久| 婷婷成人激情在线网| 国产91丝袜美女在线播放| 国内精品写真在线观看| 全黄性性激高免费视频| 超碰成人久久| 狠狠色狠狠色综合人人| 超薄肉色丝袜脚交一区二区| 久久成年人视频| 瑟瑟在线观看| 宅男噜噜噜66一区二区66| 日本五十熟hd丰满| 国产精品视频麻豆| 男男一级淫片免费播放| 另类中文字幕网| 国产免费黄色小视频| 色天天综合网| 久久精品日产第一区二区三区乱码| 国产黄色精品| 4k岛国日韩精品**专区| 黄色国产网站在线播放| 亚洲乱码国产乱码精品精天堂| 99久久免费国产精精品| 91久久精品一区二区| 久草视频精品在线| 最新不卡av在线| 国产熟妇久久777777| 精品裸体bbb| 亚洲第一av色| 99鲁鲁精品一区二区三区| 久久这里只有精品视频网| 欧美一区二区三区影院| 日韩高清国产一区在线| 玩弄中年熟妇正在播放| 欧美一区国产在线| 亚洲激情啪啪| 国产伦精品一区二区三区千人斩| 成人午夜电影免费在线观看| 日韩一级特黄| 国产日韩欧美在线播放| 在线国产成人影院| 欧美一区二区三区图| ririsao久久精品一区| 米奇精品一区二区三区在线观看| 97在线观看免费观看高清| 精品小视频在线| 色婷婷综合视频| 精品国产伦一区二区三区观看方式| 国产美女永久免费| 欧美色爱综合网| 午夜视频网站在线观看| 亚洲视频你懂的| 日本精品人妻无码77777| 中文字幕在线不卡一区二区三区| 精品一区二区三孕妇视频| 久久久精品黄色| 一道本在线观看| 久久老女人爱爱| 综合网在线观看| 天堂av在线| 久久不射电影网| 成人免费网址| 欧美xxxx做受欧美.88| 男人天堂手机在线| 日韩在线视频导航| 日韩三级影院| 久久久精品日本| 在线看三级电影| 久久久久久久av| 国产美女高潮在线观看| 91高清免费在线观看| sese综合| 国产精品丝袜白浆摸在线| 亚洲国产伊人| 99久久精品免费看国产四区| 最新精品在线| 久久99国产精品| 欧美禁忌电影网| 一区二区不卡视频| 中国成人一区| 亚洲熟妇无码一区二区三区| 久久精品日韩欧美| 欧美特级aaa| 国产盗摄精品一区二区三区在线| 黄色激情在线观看| 91视频一区二区三区| 国产jjizz一区二区三区视频| 国产精品久久毛片a| 国产成人久久久久| 亚洲观看高清完整版在线观看| 五月婷婷色丁香| 高清久久久久久| 国产成人精品免高潮在线观看| 色在线中文字幕| 国产日韩换脸av一区在线观看| 国产精品2区| 久久精品成人一区二区三区蜜臀| 奇米影视亚洲| 轻点好疼好大好爽视频| 久久青草久久| 性色av浪潮av| 久久精品欧美日韩| 中文字幕av免费在线观看| 同产精品九九九| 一级黄色片在线播放| 亚洲国产精品一区二区三区| av网站在线免费观看| 欧美激情精品久久久久久| 澳门成人av网| 91久久国产综合久久蜜月精品 | 免费在线日韩av| 亚洲免费av一区| 91亚洲精品乱码久久久久久蜜桃 | 国产精品久久久久秋霞鲁丝| 日韩精品成人在线观看| 日本一区视频在线播放| 欧美在线三区| 手机看片福利日韩| eeuss鲁片一区二区三区在线观看| 亚洲色图27p| 欧美天堂在线观看| 国产人妖一区二区| 亚洲电影一区| 91久色国产| 日韩精品免费一区二区三区| 精品视频在线观看一区| 久久精品国产亚洲一区二区三区| 女尊高h男高潮呻吟| 亚洲一二三区在线观看| 在线亚洲欧美日韩| 精品一区二区三区电影| 女同视频在线观看| 国产综合福利在线| 国产欧美日韩影院| 黄色av网址在线播放| 国产在线不卡一区| 手机av在线不卡| 色婷婷国产精品久久包臀| 欧洲av在线播放| 欧美国产日产韩国视频| 大胆国模一区二区三区| 香蕉久久免费影视| 老色鬼久久亚洲一区二区| www.88av| 婷婷中文字幕一区三区| 亚洲美女福利视频| 美女av一区二区三区| 外国成人毛片| 亚洲一区二区在线免费观看| 日本aⅴ亚洲精品中文乱码| 国产精品无码久久久久一区二区| 黑人巨大精品欧美一区二区一视频 | 99亚洲伊人久久精品影院红桃| aaaaaaaa毛片| 亚洲人亚洲人成电影网站色| 国产又粗又猛视频| 日韩网站在线观看| 日本少妇性高潮| 成人永久免费视频| 日韩一级片av| 日韩女同互慰一区二区| 羞羞的视频在线看| 国产精品白丝jk白祙| 欧美日一区二区在线观看| www.四虎精品| 亚洲丶国产丶欧美一区二区三区| 日韩在线观看视频网站| 97国产一区二区精品久久呦| 欧美1区二区| 91黄色小网站| 中文字幕乱码亚洲精品一区| 亚洲视频在线观看一区二区 | 日韩av激情| 国产手机精品在线| 亚洲在线观看| 女人十八毛片嫩草av| 欧美日韩高清不卡| a级毛片免费观看在线| 国产精品视频一区二区三区经| 亚洲免费播放| 日韩一级av毛片| 欧美日韩高清在线| 欧美精品videossex少妇| 久久精精品视频| 视频在线在亚洲| 北条麻妃在线观看视频| 日韩欧美国产电影| 日韩av官网| 日本在线高清视频一区| 国内精品免费在线观看| 青青草偷拍视频| 亚洲精品一区中文字幕乱码| 国产精品久久久久久吹潮| 青青草原网站在线观看| 成人午夜电影久久影院| 国产视频1区2区| 亚洲激情婷婷| 午夜啪啪小视频| 亚洲国产日韩精品| 国模精品一区二区| 91久久精品国产91久久性色| 99pao成人国产永久免费视频| 中国女人特级毛片| 日韩一区二区三区免费看| 麻豆网站免费在线观看| 视频一区二区视频| jlzzjlzz亚洲日本少妇| 在线播放精品视频| 久久久久中文字幕2018|