springMVC中绑定参数的常用注解
1.@RequestMapping用来映射一个请求或方法,它有几个属性(value,methed,consumes:数据类型,如json,produces:返回类型如json,params,headers),当使用多个属性时,必须带value,只有value属性时
RequestMapping("/test")==RequestMapping(value="/test")
2.@RequestParam
有四个属性:name,value,required(是否必须绑定参数,默认为true,当不一定绑定参数时,需要用false,不然没参数时会报错),defaultValue(如果没有传递参数则使用默认值)
用法:直接在方法的参数里使用,比如
3.@RequestMapping("/XX")
public String hello(@RequestParam("name")String name){}
//public String hello(@RequestParam(value="name",required=true,defaultValue="admin"){}
@PathVariable注解
此注解是获得URL(请求)中的动态参数,只有一个属性value(String),如:
请求为:/test/${id}
@RequestMapping(value="/test/{id}")
public void test(@PathVariable Integer id)
当然也可以:
@RequestMapping("/test")
public void test(@RequestParam("id")Integer id){ }
4.@SessionAttributes
指定Model中的哪些属性转存到HttpSession对象中.
此注解只能声明在类上,不能声明在方法上.
如:
@SessionAttribute("user");
在方法中:
Model model;
model.addAttribute("user",user);
将Model中的属性名为user的属性放入HttpSession对象中.
也可以这样写:
@SessionAttributes(type={User.class},value="user")
@SessionAttributes(type={User.class,Student.class},value={"user","student"})
前台获取:
${requestScope.user.userName}
5.@ModelAttribute
此注解也是绑定参数到Model上,但是在Controller的每个方法前被执行,如:
@ModelAttribute("test")
public String test(@RequestPara("tets")String test)){
retrun test;
}
return相当于是model.addAttribute("test",test);
在前台使用:${requestScope.test}
具体的可以参考http://blog.csdn.net/catoop/article/details/51171108
6.@ResponseBody
此注解表示该方法的返回结果直接写入HTTP response body中,
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
如:
@RequestMapping("/json")
@RequestBody
public Object hh(){
List bookList=new ArraryList();
list.add(new book(1,"spring","hh"));
return list;
}}
此方法会将List集合数据转换成json格式,然后将其返回到客户端.
同时,@ReqestBody也可以处理xml数据.