@RequestParam
作用:修饰形参参数名称
@RequestMapping("/user1")
public String testRequestParam(@RequestParam(name = "name") String username){
return username;
}
操作方法
http://localhost:8080/user1?name=Test
@RequestBody
作用:用于获取请求体内容直接使用得到的是key=value&key=value的数据结构
@RequestMapping("/user2")
public String testRequestBody(@RequestBody String body){
return body;
}
操作方法
http://localhost:8080/user2 [POST]
POST:
body:"test"
@PathVaribale
作用:用于绑定url中的占位符,例如url请求中/delete/{id},这个{id}就是url占位符
@RequestMapping("/user3")
public String testPathVariable(@PathVaribale(name = "sid") String id){
return id;
}
操作方法
http://localhost:8080/user3/10
@RequestHeader
作用:用于获取请求的消息头
@RequestMapping("/user4")
public String testRequestHeader(@RequestHeader(value = "Accept") String header){
return header;
}
操作方法
http://localhost:8080/user4
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66
@CookieValue
作用:用于把指定的cookie名称的值传入控制器方法的参数
@RequestMapping("/user5")
public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookieValue){
return cookieValue;
}
操作方法
http://localhost:8080/user5
@ModelAttribute
作用:它可以用于修饰方法和参数。出现在方法上,表示当前方法会在控制器的方法之前执行,它可以修饰没有返回值的方法,也可以修饰具有返回值的方法。出现在参数上,获取指定的数据给参数赋值。
场景:当在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数据是肯定没有此字段的内容,一旦更新会把该字段内容设置为null,此时就可以使用此注解解决问题
@RequestMapping("/user6")
public String testModelAttribute(User user){
System.out.println("testModelAttribute执行了...");
System.out.println(user);
return "success";
}
/**
* 该方法会先执行
*/
@ModelAttribute
public User showUser(String name){
System.out.println("showUser执行了...");
//通过用户查询数据库(模拟)
User user = new User();
user.setName("test");
user.setAge(20);
user.setDate(new Date());
return user;
}
@RequestMapping("/user7")
public String testModelAttribute(@ModelAttribute("abc") User user){
System.out.println("testModelAttribute执行了...");
System.out.println(user);
return "success";
}
/**
* 该方法会先执行
*/
@ModelAttribute
public void showUser(String name,Map<String,User> map){
System.out.println("showUser执行了...");
//通过用户查询数据库(模拟)
User user = new User();
user.setName("test");
user.setAge(20);
user.setDate(new Date());
map.put("abc",user);
}
@SessionAttribute
作用:用于多次执行控制器方法间的参数共享
属性: value-属性名称,type-存入的数据类型
@Controller
@SessionAttributes(value = {"msg"}) //把msg存入到session域中
public class UserController{
/**
* SessionAttributes的注解
*
*/
@RequestMapping("/user8")
public String testSessionAttribute(Model model){
System.out.println("testSessionAttribute...");
model.addAttribute("msg","成功");
return "success";
}
/**
* 获取session域中msg值
*/
@RequestMapping("/user9")
public String getSessionAttribute(ModelMap modelMap){
System.out.println("getSessionAttribute...");
String msg = (String) modelMap.get("msg");
System.out.println(msg);
return "success";
}
/**
* 删除session域中全部信息
*/
@RequestMapping("/user10")
public String delSessionAttribute(SessionStatus status){
System.out.println("delSessionAttribute...");
status.setComplete(); //执行清除
return "success";
}
}