model1:jsp充當(dāng)頁(yè)面展示和后端控制器
model2:jsp負(fù)責(zé)頁(yè)面展示,servlet負(fù)責(zé)后端控制
Spring MVC基于model2實(shí)現(xiàn)的框架
一? ? ? ?SpringMVC????demo
1? ? 添加依賴(lài)
2? ? 配置web.xml
先通過(guò)找到中對(duì)應(yīng)的,再執(zhí)行,中的為了指定執(zhí)行的xml文件(不寫(xiě)也是可以的,默認(rèn)路徑是WEB-INF/[servlet-name]-servlet.xml的文件,否則會(huì)報(bào)錯(cuò),在上圖中就是需要WEB-INF下的dispatcherServlet-servlet.xml的文件)
3????配置SpringMVC的配置文件(有兩種)
(1)如果控制類(lèi)用的是實(shí)現(xiàn)Controller接口的話(huà),下圖即可,prefix表示前綴,suffix表示后綴,路徑需要使用name來(lái)標(biāo)識(shí)一個(gè)控制器的路徑,因?yàn)閕d屬性不能有特殊字符"/",根據(jù)name屬性的路徑執(zhí)行相關(guān)的類(lèi)
(2)注解的情況下
需要在添加命名空間為mvc和context, <mvc:default-servlet-handler />(靜態(tài)資源可以直接訪(fǎng)問(wèn))<context:component-scan base-package="com.qianfeng.controller"/>(上下文組件掃描)<mvc:annotation-driven/>(配置注解驅(qū)動(dòng),不加會(huì)使requestMapping失效)
4? ? 創(chuàng)建Controller包及控制類(lèi)(兩種)
(1)實(shí)現(xiàn)Controller接口
返回類(lèi)型是ModelAndView,下圖的對(duì)象里可以寫(xiě)一個(gè)參數(shù),表示需要跳轉(zhuǎn)頁(yè)面的地址(因?yàn)槲以趚ml使用了默認(rèn)加入前綴和后綴,所以這里只寫(xiě)了"index"),也可以是三個(gè)參數(shù),第一個(gè)參數(shù)是需要跳轉(zhuǎn)頁(yè)面的地址,第二和第三個(gè)參數(shù)可以看成設(shè)置request域的參數(shù),前者是名稱(chēng),后者是要放進(jìn)域里的數(shù)據(jù)
(2)注解式
需要在類(lèi)名上加@Controller(因?yàn)镃ontroller已經(jīng)被標(biāo)明了他是一個(gè)組件,用@Controller也可以將這個(gè)類(lèi)標(biāo)明為組件),@RequestMapping(攔截范圍)可以放在類(lèi)或方法上,getAll方法內(nèi)參數(shù)可以是HttpServletRequestServletRequest和Model類(lèi)型的