前后端的数据交互:@RequestMapping、@RequestParam、@RequestBody、@RequestHeader等等
文章目录
- @RequestHeader
- @RequestParam
- RequestBody
@RequestHeader
@RequestHeader注解将请求头中User-Agent
的变量与userAgent
变量绑定。如果在@RequestHeader没有指定value值,那就默认前端userAgent与后端userAgent绑定,即前后端必须有一个相同名字的参数userAgent。
@Controller
public class HelloController { @RequestMapping(value = "/hello.htm")public String hello(@RequestHeader(value="User-Agent") String userAgent)//..}
}
@RequestParam
@RequestParam配合GET方法,没有方法体,方法中的参数都是从URL中获取
RequestBody
$.ajax({url:"/login",type:"POST",data:'{"userName":"admin","pwd","admin123"}',content-type:"application/json charset=utf-8", //要特别注意后台接口是否加了@RequestBody,决定了传递参数的类型success:function(data){alert("request success ! ");}});
这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串
@requestMapping("/login")public void login(@requestBody String userName,@requestBody String pwd){System.out.println(userName+" :"+pwd);}
但是呢假如我有一个User类,拥有如下字段:String userName;
String pwd;
那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上,需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。