@ResponseBody的作用是将java对象转为json格式的数据(默认的是Object)。
在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后不会再走视图处理器。返回结果不被解析为跳转路径,而是转换格式后写入 HTTP response body 中返回,效果等同于通过response对象输出指定格式的数据,一般在AJAX异步获取数据时使用,返回JSON数据或者是XML数据。
@RequestMapping(value = "user/login") @ResponseBody // 将ajax(datas)发出的请求写入 User 对象中 public User login(@RequestBody User user) { // 这样就不会再被解析为跳转路径,而是直接将user对象写入 HTTP 响应正文中 return user; }
@RequestBody接收请求体类型参数,SpringMVC解析通过HttpEntity传递的参数,然后绑定到相应的bean上。
一个请求,最多只能有一个RequestBody,但可以有多个RequestParam。
当同时使用@RequestParam()和@RequestBody时,原SpringMVC接收参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理,所以此时@RequestParam指定的参数可以是普通元素、数组、集合、对象等。
@RequestParam:将请求参数绑定到控制器的方法参数上。
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false
@RequestMapping("show")
public MV test(@RequestParam(value="name",required=true,defaultValue="无")String name){
MV mv = new MV();
mv.setViewName("hello2");
mv.addObject("msg", "接收普通请求参数:" + name);
return mv;
当请求为get请求时,使用@PathVariable或者@RequestParam获取参数值,获取路径参数。@PathVariable一般用于获取获取url/{id}这种形式的参数;@RequestParam获取查询参数。即url?name=这种形式