RequestHeader:@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。
public void getAccountByOpenId(@RequestHeader("id") String id){};
api:
CookieValue:@CookieValue可以把Request header中关于cookie的值绑定到方法的参数上。
public void getAccountByOpenId(@CookieValue("JSESSIONID") String id){};
RequestParam:在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法。
– value:参数名
– required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常
@RequestMapping("worker") public String handle(@RequestParam(value="name") String un, @RequestParam(value="age") int age) { System.out.println("a worker's request has come. name: "+un+", age: "+age); return "success"; }
RequestBody:1) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
2) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
@RequestMapping(value = "user")
@ResponseBody
// 将ajax(datas)发出的请求写入 User 对象中
public User login(@RequestBody User user//接收body中的json字符串) {
// 这样就不会再被解析为跳转路径,而是直接将user对象写入 HTTP 响应正文中
return user;
}
Responsebody:@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
@RequestMapping("/login")
@ResponseBody
public User login(User user){ return user; } //User字段:userName pwd 那么在前台data:'{"userName":"xxx","pwd":"xxx"}'
//效果等同于如下代码:
@RequestMapping("/login")
public void login(User user, HttpServletResponse response){ response.getWriter.write(JSONObject.fromObject(user).toString()); }
PathVariable:当使用@RequestMapping URI template 样式映射时, 即 url/{id}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
@RequestMapping("/test/{id}")
public void findPet(@PathVariable String id, Model model) { // implementation omitted }