SpringMVC的框架:
DispatcherServlet前端控制器
接收請(qǐng)求request進(jìn)行響應(yīng)response
調(diào)用HandlerMapping處理器映射器,根據(jù)url查找Handler(可以通過(guò)xml方式、注解方式)
HandlerAdapter處理器適配器:根據(jù)要求的特定的規(guī)則去執(zhí)行Handler,編寫(xiě)Handler時(shí)需要按照適配器的要求去編寫(xiě)
Handler處理器(后端控制器):需要程序員編寫(xiě),常用注解的方式開(kāi)發(fā)
Handler處理器執(zhí)行后的結(jié)果是ModelAndView
不管Handler返回啥,Adapter都會(huì)把他封裝成ModelAndView,具體開(kāi)發(fā)時(shí)handler返回方法值類(lèi)型包括:
ModelAndView、String(邏輯視圖名)、void(在Handler的形參中添加request、response,類(lèi)似于原始的servlet開(kāi)發(fā)方式,注意:可以通過(guò)來(lái)指定response響應(yīng)結(jié)果的類(lèi)型,可以實(shí)現(xiàn)json數(shù)據(jù)輸出)
視圖:
viewresolver視圖解析器:根據(jù)邏輯視圖名,生成真正的視圖(在SpringMVC中使用View對(duì)象表示)
View視圖界面(jsp頁(yè)面):
jsp頁(yè)面,僅是數(shù)據(jù)展示,沒(méi)有業(yè)務(wù)邏輯
注解開(kāi)發(fā):
使用注解方式的處理器映射器和適配器
在實(shí)際開(kāi)發(fā)中使用MVC注解驅(qū)動(dòng)標(biāo)簽來(lái)代替單獨(dú)的配置
@controller
必須要加,標(biāo)識(shí)此類(lèi)是一個(gè)Handler處理器
@RequestMapping
必須要加,作用:
1、對(duì)url和Handler的方法進(jìn)行映射
2、可以窄化請(qǐng)求映射,設(shè)置Handler的根路徑,url就是根路徑+子路徑
3、可以限制Http請(qǐng)求的方法
映射成功后,SpringMVC會(huì)生成一個(gè)Handler對(duì)象
這個(gè)對(duì)象中只包含一個(gè)所映射成功的Method
注解開(kāi)發(fā)的參數(shù)綁定:
將request請(qǐng)求過(guò)來(lái)的key/value的數(shù)據(jù)(理解成一個(gè)串),通過(guò)轉(zhuǎn)換(參數(shù)綁定的一部分),將key/value的串轉(zhuǎn)換成形參,然后將轉(zhuǎn)換后的結(jié)果傳給形參(整個(gè)參數(shù)綁定的過(guò)程)
Spring所支持的參數(shù)綁定:
默認(rèn)支持很多類(lèi)型:
1、HttpServletRequest、HttpServletResponse、HttpSession、Model/ModelMap(將模型數(shù)據(jù)填充到request域)
2、支持簡(jiǎn)單數(shù)據(jù)類(lèi)型:整型、字符串、日期,只要保證request請(qǐng)求的參數(shù)名和形參名稱(chēng)一致,自動(dòng)綁定成功
如果request請(qǐng)求的參數(shù)名稱(chēng)和形參名稱(chēng)不一致,可以使用@RequestParam(指定request請(qǐng)求的參數(shù)名)
@RequestParam加在形參的前邊,如果有多個(gè)形參,需要用多個(gè)@RequestParam
3、支持pojo類(lèi)型
只要保證頁(yè)面提交的input名稱(chēng)、或者request提交的參數(shù)的名稱(chēng)和pojo中的屬性名稱(chēng)一致,會(huì)自動(dòng)將request請(qǐng)求的參數(shù)設(shè)置到pojo的屬性中
注意:形參里面既有簡(jiǎn)單類(lèi)型,又有pojo類(lèi)型,最后綁定參數(shù)是互不影響的,各自綁定各自的
4、自定義參數(shù)綁定:
日期類(lèi)型的參數(shù)綁定:
定義了一個(gè)converter接口的實(shí)現(xiàn)類(lèi)
Converter<S,T>第一個(gè)參數(shù)是源類(lèi)型,第二個(gè)參數(shù)是目標(biāo)類(lèi)型
注意:要轉(zhuǎn)換的目標(biāo)類(lèi)型,一定是和要接收的pojo的屬性的類(lèi)型一致
將定義的converter實(shí)現(xiàn)類(lèi)注入到處理器適配器中
Spring和Struts的區(qū)別:
Spring是面向方法開(kāi)發(fā)(更接近service接口的開(kāi)發(fā)方式),Struts是面向類(lèi)開(kāi)發(fā)的
SpringMVC可以單例開(kāi)發(fā),Struts只能是多例開(kāi)發(fā)
SpringMVC入門(mén)知識(shí)5
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
- Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
- 1.Spring web mvc介紹 Spring web mvc和Struts2都屬于表現(xiàn)層的框架,它是Spri...
- 別人問(wèn)我自閉癥是不可能康復(fù)的,為什么還要給孩子做康復(fù)? 我的回答是:如果不提升認(rèn)知、理解能力,那么他的情緒行為就會(huì)...
- 每天 我們好像上緊了發(fā)條的齒輪 工作,學(xué)習(xí),應(yīng)酬,應(yīng)對(duì) 永不滿(mǎn)足的欲望 永無(wú)盡頭的跋涉 一刻不停 有時(shí)會(huì)感到厭倦、...