javascript
Spring MVC学习路(三) 编写第一个demo
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
新建包c(diǎn)om.test里面新建Test.java文件
在上述視圖解析器中,如果Controller返回的是blog/index,那么通過(guò)視圖解析器解析之后的視圖就是/demo.jsp。
@Controller:用于標(biāo)識(shí)是處理器類;
@RequestMapping:請(qǐng)求到處理器功能方法的映射規(guī)則;
@RequestParam:請(qǐng)求參數(shù)到處理器功能處理方法的方法參數(shù)上的綁定;
@ModelAttribute:請(qǐng)求參數(shù)到命令對(duì)象的綁定;
@SessionAttributes:用于聲明session級(jí)別存儲(chǔ)的屬性,放置在處理器類上,通常列出
模型屬性(如@ModelAttribute)對(duì)應(yīng)的名稱,則這些屬性會(huì)透明的保存到session中;
@InitBinder:自定義數(shù)據(jù)綁定注冊(cè)支持,用于將請(qǐng)求參數(shù)轉(zhuǎn)換到命令對(duì)象屬性的對(duì)應(yīng)類型;
更詳細(xì)的說(shuō)明來(lái)源于:http://www.cnblogs.com/superjt/p/3309255.html
package?controller;import?javax.servlet.http.HttpServletRequest;import?org.springframework.stereotype.Controller; import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.RequestParam;import?entity.User;@Controller??//類似Struts的Action public?class?TestController?{@RequestMapping("test/login.do")??//?請(qǐng)求url地址映射,類似Struts的action-mappingpublic?String?testLogin(@RequestParam(value="username")String?username,?String?password,?HttpServletRequest?request)?{//?@RequestParam是指請(qǐng)求url地址映射中必須含有的參數(shù)(除非屬性required=false)//?@RequestParam可簡(jiǎn)寫為:@RequestParam("username")if?(!"admin".equals(username)?||?!"admin".equals(password))?{return?"loginError";?//?跳轉(zhuǎn)頁(yè)面路徑(默認(rèn)為轉(zhuǎn)發(fā)),該路徑不需要包含spring-servlet配置文件中配置的前綴和后綴}return?"loginSuccess";}@RequestMapping("/test/login2.do")public?ModelAndView?testLogin2(String?username,?String?password,?int?age){//?request和response不必非要出現(xiàn)在方法中,如果用不上的話可以去掉//?參數(shù)的名稱是與頁(yè)面控件的name相匹配,參數(shù)類型會(huì)自動(dòng)被轉(zhuǎn)換if?(!"admin".equals(username)?||?!"admin".equals(password)?||?age?<?5)?{return?new?ModelAndView("loginError");?//?手動(dòng)實(shí)例化ModelAndView完成跳轉(zhuǎn)頁(yè)面(轉(zhuǎn)發(fā)),效果等同于上面的方法返回字符串}return?new?ModelAndView(new?RedirectView("../index.jsp"));??//?采用重定向方式跳轉(zhuǎn)頁(yè)面//?重定向還有一種簡(jiǎn)單寫法//?return?new?ModelAndView("redirect:../index.jsp");}@RequestMapping("/test/login3.do")public?ModelAndView?testLogin3(User?user)?{//?同樣支持參數(shù)為表單對(duì)象,類似于Struts的ActionForm,User不需要任何配置,直接寫即可String?username?=?user.getUsername();String?password?=?user.getPassword();int?age?=?user.getAge();if?(!"admin".equals(username)?||?!"admin".equals(password)?||?age?<?5)?{return?new?ModelAndView("loginError");}return?new?ModelAndView("loginSuccess");}@Resource(name?=?"loginService")??//?獲取applicationContext.xml中bean的id為loginService的,并注入private?LoginService?loginService;??//等價(jià)于spring傳統(tǒng)注入方式寫get和set方法,這樣的好處是簡(jiǎn)潔工整,省去了不必要得代碼@RequestMapping("/test/login4.do")public?String?testLogin4(User?user)?{if?(loginService.login(user)?==?false)?{return?"loginError";}return?"loginSuccess";} }以上4個(gè)方法示例,是一個(gè)Controller里含有不同的請(qǐng)求url,也可以采用一個(gè)url訪問(wèn),通過(guò)url參數(shù)來(lái)區(qū)分訪問(wèn)不同的方法,代碼如下:
package?controller;import?org.springframework.stereotype.Controller; import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.RequestMethod;@Controller @RequestMapping("/test2/login.do")??//?指定唯一一個(gè)*.do請(qǐng)求關(guān)聯(lián)到該Controller public?class?TestController2?{@RequestMappingpublic?String?testLogin(String?username,?String?password,?int?age)?{//?如果不加任何參數(shù),則在請(qǐng)求/test2/login.do時(shí),便默認(rèn)執(zhí)行該方法if?(!"admin".equals(username)?||?!"admin".equals(password)?||?age?<?5)?{return?"loginError";}return?"loginSuccess";}@RequestMapping(params?=?"method=1",?method=RequestMethod.POST)public?String?testLogin2(String?username,?String?password)?{//?依據(jù)params的參數(shù)method的值來(lái)區(qū)分不同的調(diào)用方法//?可以指定頁(yè)面請(qǐng)求方式的類型,默認(rèn)為get請(qǐng)求if?(!"admin".equals(username)?||?!"admin".equals(password))?{return?"loginError";}return?"loginSuccess";}@RequestMapping(params?=?"method=2")public?String?testLogin3(String?username,?String?password,?int?age)?{if?(!"admin".equals(username)?||?!"admin".equals(password)?||?age?<?5)?{return?"loginError";}return?"loginSuccess";} }其實(shí)RequestMapping在Class上,可看做是父Request請(qǐng)求url,而RequestMapping在方法上的可看做是子Request請(qǐng)求url,父子請(qǐng)求url最終會(huì)拼起來(lái)與頁(yè)面請(qǐng)求url進(jìn)行匹配,因此RequestMapping也可以這么寫:
package?controller;import?org.springframework.stereotype.Controller; import?org.springframework.web.bind.annotation.RequestMapping;@Controller @RequestMapping("/test3/*")??//?父request請(qǐng)求url public?class?TestController3?{@RequestMapping("login.do")??//?子request請(qǐng)求url,拼接后等價(jià)于/test3/login.dopublic?String?testLogin(String?username,?String?password,?int?age)?{if?(!"admin".equals(username)?||?!"admin".equals(password)?||?age?<?5)?{return?"loginError";}return?"loginSuccess";} }轉(zhuǎn)載于:https://my.oschina.net/u/2538370/blog/537491
總結(jié)
以上是生活随笔為你收集整理的Spring MVC学习路(三) 编写第一个demo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nancy框架安装并使用
- 下一篇: 254. Factor Combinat