@RequestParam
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
例如:defaultValue
为给name
设定默认值,@RequestParam
中的value
值必须跟http://localhost:8080/hello/show18?name=998
中?
后的参数名对应上
@RequestMapping("show18")
public ModelAndView test18(@RequestParam(value="name",required=true,defaultValue="hello")String name){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello2");
mv.addObject("msg", "接收普通请求参数:" + name);
return mv;
}
@PathVariable
@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值
@PathVariable("xxx")
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
例如对于如下代码:
@RequestMapping("show5/{id}/{name}")
public ModelAndView test5(@PathVariable("id") Long ids ,@PathVariable("name") String names){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","占位符映射:id:"+ids+";name:"+names);
mv.setViewName("hello2");
return mv;
}
当我们给定请求路径为http://localhost:8080/hello/show5/1/james时,经过@PathVariable修饰的参数ids
和names
,会分别被赋值为1
和james
@RequestBody
- 该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定到要返回的对象上;
- 再把 HttpMessageConverter 返回的对象数据绑定到 controller 中方法的参数上。
具象的说,就是将前台返回的数据,封装到@RequestBody
注解修饰的相应类中,如下所示代码,返回的数据封装到Brand类
@PostMapping(value = "/search")
public Result<List<Brand>> findList(@RequestBody Brand brand){
List<Brand> brands=brandService.findList(brand);
return new Result<List<Brand>>(true,StatusCode.OK,"条件搜索查询成功",brands);
}
使用时机:
GET、POST方式提交
: 根据 request header Content-Type 的值来判断:
application/x-www-form-urlencoded
:可选(即非必须,因为这种情况的数据 @RequestParam
, @ModelAttribute
也可以处理,当然@RequestBody
也能处理);
multipart/form-data
:不能处理(即使用@RequestBody不能处理这种格式的数据);
其他格式
:必须(其他格式包括application/json
, application/xml
等。这些格式的数据,必须使用@RequestBody
来处理);
PUT 方式提交
: 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded
:必须;
multipart/form-data
:不能处理;
其他格式
:必须;
@ResponseBody
- 该注解用于将 Controller 的方法返回的对象,通过适当的 HttpMessageConverter 转换为指定格式后,写入到 HTTP 中的 Response 对象的body 数据区。然后可以在前台页面时显示这些信息。
注意
- 在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
- @ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】。
使用时机
返回的数据不是html标签的页面,而是其他格式数据,比如json、xml等。