SpringMVC3實(shí)現(xiàn)與CRUD整合

一SpringMVC實(shí)現(xiàn)與CRUD整合

表單的name要和屬性一致,這樣SpringMVC才可以完成自動封裝(將上傳的內(nèi)容封裝成一個對象),public String update(Product product){}表單里的name會對product中對應(yīng)的屬性進(jìn)行賦值

傳遞參數(shù)有兩種:1問號傳參:需要使用問號來拼接參數(shù),如果傳遞多個值,需要使用&來拼接,不會改變路徑級別

2路徑傳參:統(tǒng)配規(guī)則(傳什么就可以進(jìn)入什么頁面)@GetMapping("/{path}"),如果同時統(tǒng)配和具體的url(@GetMapping("/a"))都滿足,則以更精確的url來處理該請求。

可以直接指定變量的數(shù)據(jù)類型,而無需再做數(shù)據(jù)類型的轉(zhuǎn)換,也可以實(shí)現(xiàn)傳入多個參數(shù),/{abc}/{xyz},方法里面可以使用 public String deleteProduct(@PathVariable int abc,@PathVariable String xyz)方式來接收。注意路徑傳參會多一級目錄,要注意訪問路徑

箭頭內(nèi)容要一致

1????RequestMapping 可以通過method來區(qū)分不同的請求方式????

@RequestMapping(value = “/update”, method = RequestMethod.POST)代表處理post請求

@RequestMapping(value = “/update”, method = RequestMethod.GET)代表處理get請求

2? ?GETMapping,可以簡化代碼,專門用來處理get請求(4.3以后的Spring版本可用)

3? ?PostMapping,可以簡化代碼,專門用來處理post請求(4.3以后的Spring版本可用)可以與GetMapping的參數(shù)一樣,因?yàn)檎埱蠓绞讲灰粯?/p>

4? ?PathVariable路徑傳參的注解,可以實(shí)現(xiàn)路徑傳參。

二? ? MVC校驗(yàn)

1寫一個配置文件(前面的message可以變,但后面的zh_CN_properties是固定格式)properties內(nèi)容格式是key=value,我的idea如果把文件放在WEB-INF下會一直報(bào)錯,找不到文件,只能把文件放在resources;

messages_zh_CN_properties(中文)

messages_en_US_properties(英文)

2在mvc.xml文件中配置如下,id必須是messageSource,SpringMVC會根據(jù)id所對應(yīng)的bean對象來讀取配置文件

property內(nèi)的name必須是basename,用于讀取文件,因?yàn)槲野裵roperties配置文件放在resources;所以value是messages(文件名)

3實(shí)現(xiàn)Validator接口,實(shí)現(xiàn)里面的兩個方法supports(用來對于哪個類實(shí)現(xiàn)校驗(yàn))和validate(完成真正的校驗(yàn),一定是滿足了supports方法之后才會進(jìn)入該方法來進(jìn)行校驗(yàn)),validate有兩個參數(shù),前者是需要檢驗(yàn)的對象,后者是存儲的錯誤信息,

rejectValue("字段名",properties配置文件的key值)用于合法性檢驗(yàn),兩個參數(shù)

rejectIfEmpty(errors,"字段名",properties配置文件的key值),用于非空檢驗(yàn),三個參數(shù)

4? ? 書寫Controller類(校驗(yàn))

該類return的都代表最終的展示頁面,如果帶有redirect,則代表重定向

第一個GetMapping("/saveEmp")代表以get方式請求該資源,里面寫了一個ModelAndView對象,傳了三個參數(shù),第一個是viewname,視圖名,拼接上前后綴可以得到真正的物理視圖,來打開該物理視圖所對應(yīng)的頁面,第二個參數(shù)為modelname,模型名,相當(dāng)于給模型起名字,這里要注意,該模型名意識要被叫做bean對象的小寫形式Product(product),第三個參數(shù)為modelObject,模型對象,將該對象通過模型名傳遞給第一個參數(shù)viewname所對應(yīng)的頁面,在那個頁面中可以渲染該數(shù)據(jù)

modelName必須是bean對象的小寫,

commandName的值也必須與其一樣

第二個PostMapping("/saveEmp"),該注解的意思是頁面上的表單通過post請求將saveEmp的請求來在這里進(jìn)行處理。該方法包含有三個參數(shù),第一個是Product對象,可以自動封裝表單中的屬性為Bean對象,第二個參數(shù)為BindingResult對象,該對象我們通過源碼可以發(fā)現(xiàn)是Spring中的Errors的子接口,可以用來接收并存儲錯誤信息,這個對象可以接收從PorductValidate校驗(yàn)類中產(chǎn)生的錯誤信息,存儲以交給錯誤頁面的f:errors標(biāo)簽來展示錯誤信息,第三個參數(shù)是Model對象,可以用來儲存對象,目的是可以使的bean對象的錯誤數(shù)據(jù)進(jìn)行回顯

addAttribute的第一個參數(shù)必須是bean對象的小寫,commandName的值也必須與其一樣

5????書寫頁面

1????需要添加Spring MVC的form標(biāo)簽;5.0版本的spring沒有使用commandName了,用modelAttribute替代,commandName換成modelAttribute,其他的都不變,值依舊是bean對象的小寫;

1????f:input類似于html中的input標(biāo)簽,但是將name換成了path,代表的是屬性名

2????f:errors,這個標(biāo)簽可以用來展示如果當(dāng)前表單有錯誤信息時,可以在對應(yīng)的域之上進(jìn)行回顯,一般都被放在對應(yīng)的f:input標(biāo)簽之后,用來描述該屬性的錯誤信息

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容