RequestMapping
- 映射请求:也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置
@RequestMapping("/testRequestparam")
RequestParam
@RequestMapping("/testRequestparam")
public String testRequestparam(@RequestParam(name ="name") String username){
System.out.println(username);
System.out.println("执行了!");
return "success";
}
RequestBody
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String Body){
System.out.println("执行了!");
System.out.println(Body);
return "success";
}
RequestBody和RequestMapping区别
- 注解@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。RequestParam可以接受简单类型的属性,也可以接受对象类型。
- 注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。
PathVariable
@RequestMapping("/testPathVariable/{sid}")
public String testPathVariable(@PathVariable(name="sid") String id){
System.out.println("执行了!");
System.out.println(id);
return "success";
}
RequestHeader
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader(value="Accept ") String Header){
System.out.println("执行了!");
System.out.println(Header);
return "success";
}
CookieValue
@RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue(value="JSESSIONID ") String cookieValue){
System.out.println("执行了!");
System.out.println(cookieValue);
return "success";
}
ModelAttribute
- 被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。
@RequestMapping("/testModelAttribute")
public String testModelAttribute (@ModelAttribute(value = "abc") User user){
System.out.println("ModelAttribute执行了!");
System.out.println(user);
return "success";
}
@ModelAttribute
public User showUser(String uname){
System.out.println("user执行了!");
User user=new User();
user.setUname(uname);
user.setAge(20);
user.setDate(new Date());
return user;
}
@ModelAttribute
public void showUser(String uname, Map<String,User> map){
System.out.println("user执行了!");
User user=new User();
user.setUname(uname);
user.setAge(20);
user.setDate(new Date());
map.put("abc",user);
}
SessionAttributes
- 注解只用作用在 类 上,作用是将指定的 Model 的键值对保存在 session 中。可以让其他请求共用 session 中的键值对。
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes (Model model){
System.out.println("执行了!");
model.addAttribute("msg","爽");
return "success";
}
@RequestMapping("/getSessionAttributes")
public String getSessionAttributes (ModelMap modelMap){
System.out.println("执行了!");
String msg=(String) modelMap.get("msg");
System.out.println(msg);
return "success";
}
@RequestMapping("/delSessionAttributes")
public String delSessionAttributes (SessionStatus status){
System.out.println("执行了!");
status.setComplete();
return "success";
}
最后展示anno.jsp中的代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注解</title>
</head>
<body>
<%--常用的注解--%>
<%--Requestparam--%>
<a href="anno/testRequestparam?name=haha">Requestparam</a>
<br>
<%--RequestBody--%>
<form action="anno/testRequestBody" method="post">
用户姓名:<input type="text" name= "uname"/><br/>
用户年龄:<input type="text" name="age"/><br/>
<input type="submit" name="提交"/><br/>
</form>
<%--PathVariable--%>
<a href="anno/testPathVariable/10">testPathVariable</a>
<%--ReqquestHeader--%>
<a href="anno/testReqquestHeader">ReqquestHeader</a>
<%--CookieValue--%>
<a href="anno/testCookieValue">CookieValue</a>
<%--ModelAttribute--%>
<form action="anno/testModelAttribute" method="post">
用户姓名:<input type="text" name= "uname"/><br/>
用户年龄:<input type="text" name="age"/><br/>
<input type="submit" name="提交"/><br/>
</form>
<%--SessionAttributes--%>
<a href="anno/testSessionAttributes">SessionAttributes</a>
<a href="anno/getSessionAttributes">SessionAttributes</a>
<a href="anno/delSessionAttributes">SessionAttributes</a>
</body>
</html>