3.学习SpringMVC注解深入
一.SpringMVC注解:
1.RequestParam注解:
其中required属性默认为true(必须得传而且传的名字一样),为false时可以不传。
编写jsp代码:
1 <a href="/anno/testRequestParam?name=哈哈">RequestParam</a>
编写AnnoController.java的方法:
1 /** 2 * RequestParam 页面的请求参数与接收参数不同 3 * @param username 4 * @return 5 */ 6 @RequestMapping("/testRequestParam") 7 public String testRequestParam(@RequestParam(name = "name") String username){ 8 9 System.out.println("执行了..."); 10 System.out.println(username); 11 12 return "success"; 13 }
2.RequestBody
编写jsp代码:
1 <%--对于传输json数据时,获得请求体很重要,对于get请求是没有请求体的--%> 2 <form action="/anno/testRequestBody" method="post"> 3 用户的姓名:<input type="text" name="username"><br> 4 用户年龄:<input type="text" name="age"><br> 5 <input type="submit" value="提交"> 6 </form>
1 /** 2 * RequestBody 获取到请求体的内容 3 * @param body 4 * @return 5 */ 6 @RequestMapping("/testRequestBody") 7 public String testRequestBody(@RequestBody String body){ 8 9 System.out.println("执行了..."); 10 System.out.println(body); 11 12 return "success"; 13 }
3.PathVariable
编写jsp代码:
1 <a href="/anno/testPathVariable/10">PathVariable</a>
编写方法:
1 /** 2 *PathVariable 绑定url中的占位符,使用restful的风格的URL(同样的URL但是不同的请求方式和占位符) 3 * @param id 4 * @return 5 */ 6 @RequestMapping("/testPathVariable/{sid}") 7 public String testPathVariable(@PathVariable(name = "sid") String id){ 8 9 System.out.println("执行了..."); 10 System.out.println(id); 11 12 return "success"; 13 }
4.RequestHeader
编写jsp:
1 <a href="/anno/testRequestHeader">RequestHeader</a>
编写方法:
1 /** 2 * RequestHeader 获取请求头信息 3 * @param header 4 * @return 5 */ 6 @RequestMapping("/testRequestHeader") 7 public String testRequestHeader(@RequestHeader(value = "Accept") String header){ 8 9 System.out.println("执行了..."); 10 System.out.println(header); 11 12 return "success"; 13 }
5.CookieValue
jsp:
1 <a href="/anno/testCookieValue">CookieValue</a>
编写方法:
1 /** 2 * CookieValue 获取到Cookie的值 3 * @param cookieValue 4 * @return 5 */ 6 @RequestMapping("/testCookieValue") 7 public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookieValue){ 8 9 System.out.println("执行了..."); 10 System.out.println(cookieValue); 11 12 return "success"; 13 }
6.ModelAttribute:
jsp:
1 <form action="/anno/testModelAttribute1" method="post"> 2 用户的姓名:<input type="text" name="username"><br> 3 用户年龄:<input type="text" name="age"><br> 4 <input type="submit" value="提交"> 5 </form>
- 又返回值的方法:返回给后执行的方法当形参
1 /** 2 * ModelAttribute 测试有返回值的方法 3 * @param user 4 * @return 5 */ 6 @RequestMapping("/testModelAttribute1") 7 public String testModelAttribute1(User user){ 8 9 System.out.println("testModelAttribute1执行了..."); 10 System.out.println(user); 11 12 return "success"; 13 } 14 15 /** 16 * ModelAttribute 该方法会先于其他方法执行,目的是可以获取数据后先一步查询后操作数据库等 17 * @param uname 18 * @return 19 */ 20 @ModelAttribute 21 public User showUser1(String uname){ 22 23 System.out.println("showUser1执行了..."); 24 25 //先获得提交的数据进行处理然后传给请求的控制器再进行处理 26 User user = new User(); 27 user.setUname(uname); 28 user.setAge(20); 29 user.setDate(new Date()); 30 return user; 31 }
- 无返回值:
1 /** 2 * ModelAttribute 测试无返回值的方法 3 * @param user 4 * @return 5 */ 6 @RequestMapping("/testModelAttribute2") 7 public String testModelAttribute2(@ModelAttribute(value = "abc") User user){ 8 9 System.out.println("testModelAttribute2执行了..."); 10 System.out.println(user); 11 12 return "success"; 13 } 14 15 /** 16 * ModelAttribute 该方法会先于其他方法执行,目的是可以获取数据后先一步查询后操作数据库等 17 * @param username 18 * @param map 19 */ 20 @ModelAttribute 21 public void showUser2(String username, Map<String,User> map){ 22 23 System.out.println("showUser2执行了..."); 24 25 //先获得提交的数据进行处理然后传给请求的控制器再进行处理 26 User user = new User(); 27 user.setUname(username); 28 user.setAge(20); 29 user.setDate(new Date()); 30 31 map.put("abc",user); 32 }
7.SessionAttribute
jsp:
1 <a href="/anno/testSessionAttributes">向Session中存入值</a> 2 <a href="/anno/getSessionAttributes">取出session域值</a> 3 <a href="/anno/delSessionAttributes">删除session域值</a>
然后开启EL表达式:
1 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
1 <body> 2 入门成功 3 ${requestScope.msg} 4 5 ${sessionScope} 6 7 </body>
方法:
1 /** 2 * SessionAttributes注解 3 * @param model 4 * @return 5 */ 6 @RequestMapping("/testSessionAttributes") 7 public String testSessionAttributes(Model model){ 8 9 System.out.println("testSessionAttributes..."); 10 11 //底层会存储到request域对象中 12 model.addAttribute("msg","美美"); 13 14 return "success"; 15 } 16 17 18 /** 19 * getSessionAttributes 获取Session域 20 * @param modelMap 21 * @return 22 */ 23 @RequestMapping("/getSessionAttributes") 24 public String getSessionAttributes(ModelMap modelMap){ 25 26 System.out.println("getSessionAttributes..."); 27 28 String msg = (String) modelMap.get("msg"); 29 System.out.println(msg); 30 return "success"; 31 } 32 33 /** 34 * delSessionAttributes 删除session域中值 35 * @param status 36 * @return 37 */ 38 @RequestMapping("/delSessionAttributes") 39 public String delSessionAttributes(SessionStatus status){ 40 41 System.out.println("delSessionAttributes..."); 42 43 status.setComplete(); 44 return "success"; 45 }
学习完毕!