springmvc詳細(xì)工作流程 springmvc參數(shù)封裝原理?
springmvc參數(shù)封裝原理?(1)前端控制器DispatcherServlet(配置表就行)功能:中央處理器,可以接收請(qǐng)求,自己不做任何處理,只不過(guò)是將請(qǐng)求發(fā)送中給其他組件接受處理。Dispatc
springmvc參數(shù)封裝原理?
(1)前端控制器DispatcherServlet(配置表就行)
功能:中央處理器,可以接收請(qǐng)求,自己不做任何處理,只不過(guò)是將請(qǐng)求發(fā)送中給其他組件接受處理。DispatcherServlet是整個(gè)流程的控制中心。
(2)處理器映射器HandlerMapping(配置表就行)
功能:參照DispatcherServlet郵箱里的url只是請(qǐng)求路徑查找Handler
最常見(jiàn)的處理器映射器
:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping,ControllerClassNameHandlerMapping,DefaultAnnotationHandlerMapping(不個(gè)人建議不使用)
(3)處理器適配器HandlerAdapter(配置即可解決)
功能:按照特定的事件規(guī)則(HandlerAdapter要求的規(guī)則)去不能執(zhí)行Handler。
是從HandlerAdapter對(duì)處理器通過(guò)想執(zhí)行,這是適配器模式的應(yīng)用,按照擴(kuò)展多個(gè)適配器對(duì)許多類(lèi)型的處理器并且先執(zhí)行。
最常見(jiàn)的一種的處理器適配器
:HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,AnnotationMethodHandlerAdapter
(4)處理器Handler即Controller(程序猿c語(yǔ)言設(shè)計(jì))
功能:c語(yǔ)言設(shè)計(jì)Handler時(shí)通過(guò)HandlerAdapter的要求要做,那樣適配器才也可以去正確的執(zhí)行Handler。
(5)視圖解析器ViewReslover(配置即可)
功能:接受視圖解析,依據(jù)邏輯視圖名解析成完全的視圖。
ViewResolver全權(quán)負(fù)責(zé)將處理結(jié)果化合View視圖,ViewResolver是需要根據(jù)邏輯視圖名解析成物理視圖名即具體看的頁(yè)面地址,再化合View視圖對(duì)象,到最后對(duì)View進(jìn)行渲出將處理結(jié)果是從頁(yè)面展示展示給用戶(hù)。
springmvc框架提供給了功能高效View視圖類(lèi)型,如:jstlView、freemarkerView、pdfView...
(6)視圖View(程序猿c語(yǔ)言設(shè)計(jì))
View是一個(gè)接口,利用類(lèi)支持差別的View類(lèi)型(jsp、freemarker、pdf...)
MVC工作流程?
SpringMVC工作流程描述:
1.用戶(hù)向服務(wù)器發(fā)送跪請(qǐng),只是請(qǐng)求被Spring前端再控制Servelt DispatcherServlet捕獲;
2.DispatcherServlet對(duì)各位URL參與解析,得到請(qǐng)求資源標(biāo)識(shí)符(URI)。然后把依據(jù)什么該URI,動(dòng)態(tài)鏈接庫(kù)HandlerMapping我得到該Handler配置的所有相關(guān)的對(duì)象(除開(kāi)Handler對(duì)象這些Handler對(duì)象不對(duì)應(yīng)的攔截器),后來(lái)以HandlerExecutionChain對(duì)象的形式回;
3.DispatcherServlet依據(jù)完成任務(wù)的Handler,選擇類(lèi)型一個(gè)比較好的HandlerAdapter;
4.提純Request中的模型數(shù)據(jù),填充后Handler入?yún)ⅲ珠_(kāi)始先執(zhí)行Handler(Controller)。在填充Handler的入?yún)⑦^(guò)程中,依據(jù)你的配置,Spring將幫你做一些額外的工作:HttpMessageConveter:將幫忙消息(如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裝換成Integer、slip等。數(shù)據(jù)根式化:對(duì)跪請(qǐng)消息通過(guò)數(shù)據(jù)磁盤(pán)格式化。如將字符串轉(zhuǎn)換的成磁盤(pán)格式化數(shù)字或格式化日期等。數(shù)據(jù)不驗(yàn)證:不驗(yàn)證數(shù)據(jù)的有效性(長(zhǎng)度、格式等),驗(yàn)證結(jié)果存儲(chǔ)位置到BindingResult或Error中。
5.Handler先執(zhí)行能完成后,向DispatcherServlet前往一個(gè)ModelAndView對(duì)象;
6.依據(jù)什么直接返回的ModelAndView,中,選擇一個(gè)合適的ViewResolver(必須是巳經(jīng)需要注冊(cè)到Spring容器中的ViewResolver)回給DispatcherServlet;
增強(qiáng)Model和View,來(lái)軟件渲染視圖;
8.將渲染結(jié)果返回給客戶(hù)端。