request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用:

http://blog.csdn.net/walkerjong/article/details/7946109  (关于更多参数绑定常用的注解)

@PathVariable

SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
 
           $.ajax({
                url: ctx + '/management/cart/delete/'+id,
                async: false,
                cache: false,
                type: "POST",
                success: function (data) {
                    
                },
                error: function (xhr) {
                    
                }
            });
@ResponseBody
@RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
public int delete(@PathVariable int id){
    return 0;
}
//若方法参数名称和需要绑定的uri template中变量名称不一致,需要在@PathVariable("name")指定uri template中的名称
public int delete(@PathVariable("id") int rsId){
    return 0;
}
 
SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
 

@RequestParam

A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;

B)用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

C) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
 
$.ajax({
                url: ctx + '/management/cart/delete?id='+id,
                async: false,
                cache: false,
                type: "POST",
                success: function (data) {
                    
                },
                error: function (xhr) {
                    
                }
            });
@ResponseBody
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public int delete(@RequestParam("id") int id){
    return 0;
}
SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
 

@RequestBody

该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,而是application/json, application/xml等;

基于ajax的方法请求,将设置为application/json

SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
 
var cartId = 1;
$.ajax({
                url: ctx + '/management/cart/delete',
                async: false,
                cache: false,
                type: "POST",
                contentType: "application/json",
                data: cartId,
                success: function (data) {
                    
                },
                error: function (xhr) {
                    
                }
            });

@ResponseBody
    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    public int delete(@RequestBody Integer id) {
        return 0;
    }
SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
 

@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.

SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
 
var  params = [1,2,3];
$.ajax({
                url: ctx + '/management/cart/delete',
                async: false,
                cache: false,
                type: "POST",
                contentType: "application/json",
                data: JSON.stringify(params),
                success: function (data) {

                },
                error: function (xhr) {
                    
                }
            });
@ResponseBody
    @RequestMapping(value = "/deletes", method = RequestMethod.POST)
    public int deletes(@RequestBody List<Integer> ids) {
        return 0;
    }
SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解