简述springmvc过程_spring mvc的工作流程是什么?
展開全部
SpringMVC工作流程描述
向服務(wù)器發(fā)送HTTP請(qǐng)求,請(qǐng)求被前端控制器 DispatcherServlet 捕獲。
DispatcherServlet 根據(jù) -servlet.xml 中的配置對(duì)請(qǐng)62616964757a686964616fe59b9ee7ad9431333365646233求的URL進(jìn)行解析,得到請(qǐng)求資源標(biāo)識(shí)符(URI)。 然后根據(jù)該URI,調(diào)用 HandlerMapping 獲得該Handler配置的所有相關(guān)的對(duì)象(包括Handler對(duì)象以及Handler對(duì)象對(duì)應(yīng)的攔截器),最后以 HandlerExecutionChain 對(duì)象的形式返回。
DispatcherServlet 根據(jù)獲得的Handler,選擇一個(gè)合適的 HandlerAdapter。(附注:如果成功獲得HandlerAdapter后,此時(shí)將開始執(zhí)行攔截器的preHandler(…)方法)。
提取Request中的模型數(shù)據(jù),填充Handler入?yún)?#xff0c;開始執(zhí)行Handler(Controller)。 在填充Handler的入?yún)⑦^(guò)程中,根據(jù)你的配置,Spring將幫你做一些額外的工作:
HttpMessageConveter: 將請(qǐng)求消息(如Json、xml等數(shù)據(jù))轉(zhuǎn)換成一個(gè)對(duì)象,將對(duì)象轉(zhuǎn)換為指定的響應(yīng)信息。
數(shù)據(jù)轉(zhuǎn)換:對(duì)請(qǐng)求消息進(jìn)行數(shù)據(jù)轉(zhuǎn)換。如String轉(zhuǎn)換成Integer、Double等。
數(shù)據(jù)根式化:對(duì)請(qǐng)求消息進(jìn)行數(shù)據(jù)格式化。 如將字符串轉(zhuǎn)換成格式化數(shù)字或格式化日期等。
數(shù)據(jù)驗(yàn)證: 驗(yàn)證數(shù)據(jù)的有效性(長(zhǎng)度、格式等),驗(yàn)證結(jié)果存儲(chǔ)到BindingResult或Error中。
Handler(Controller)執(zhí)行完成后,向 DispatcherServlet 返回一個(gè) ModelAndView 對(duì)象;
根據(jù)返回的ModelAndView,選擇一個(gè)適合的 ViewResolver(必須是已經(jīng)注冊(cè)到Spring容器中的ViewResolver)返回給DispatcherServlet。
ViewResolver 結(jié)合Model和View,來(lái)渲染視圖。
視圖負(fù)責(zé)將渲染結(jié)果返回給客戶端。
SpringMVC運(yùn)行原理
1. ? ? ?客戶端請(qǐng)求提交到DispatcherServlet
2. ? ? ?由DispatcherServlet控制器查詢一個(gè)或多個(gè)HandlerMapping,找到處理請(qǐng)求的Controller
3. ? ? ?DispatcherServlet將請(qǐng)求提交到Controller
4. ? ? ?Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView
5. ? ? ?DispatcherServlet查詢一個(gè)或多個(gè)ViewResoler視圖解析器,找到ModelAndView指定的視圖
6. ? ? ?視圖負(fù)責(zé)將結(jié)果顯示到客戶端
總結(jié)
以上是生活随笔為你收集整理的简述springmvc过程_spring mvc的工作流程是什么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux apt命令
- 下一篇: C++面试常见问题一