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