Java后台@RequestBody、@PathVariable、@RequestParam三种获取参数方式的区别及其演示

1、@RequestBody:

@RequestBody用于解析前台请求携带的JSON数据。

后台代码举例:

@RequestMapping(value = "/testRequestBody", method = RequestMethod.PUT)
@ResponseBody
private Map testRequestBody(@RequestBody Test test) {
     Map map = new HashMap();
     //test对象包含id属性,拥有对应的get方法
	 if ("1".equals(test.getId())) {
	 	map.put("status", 1);
        return map;
	 } else {
        map.put("status", 0);
        return map;
     }      
}

前台代码举例:

$.ajax({
                url: '/testRequestBody',
                type: "PUT",
                data: JSON.stringify({id:"1"}),
                contentType: 'application/json',
                dataType: 'json',
                success: function(data) {
                    if (data.status == 1) {
                        console.log("成功!");
                    } else {
                        console.log("失败");
                    }
                },
                error: function() {
                    console.log("Ajax出错!");
                }
            });

说明:

1、前台Ajax请求的时候需要指明contentType: 'application/json'

2、前台Ajax请求的时候参数经过JSON.stringify()转化为JSON数据后,放进data(实际请求的URL还是原来的URL,后面不跟任何参数)

 

2、@PathVariable

@PathVariable直接将前台请求的URL末端指定的位置解析为请求携带的数据。

后台代码举例:

@RequestMapping(value = "/testPathVariable/{id}", method = RequestMethod.DELETE)
@ResponseBody
private Map testPathVariable(@PathVariable("id") String id) {
     Map map = new HashMap();
	 if ("1".equals(id)) {
	 	map.put("status", 1);
        return map;
	 } else {
        map.put("status", 0);
        return map;
     }      
}

前台代码举例:

$.ajax({
                        url: '/testPathVariable/1',
                        type: "DELETE",
                        dataType: 'json',
                        success: function(data) {
                            if (data.status == 1) {
                                console.log("成功!");
                            } else {
                                console.log("失败!");
                            }
                        },
                        error: function() {
                            console.log("Ajax出错!");
                        }
                    });

说明:

1、前台Ajax请求的时候参数跟在URL后面,形式为 url: ' / 地址 / 参数值 '

 

3、@RequestParam

@RequestParam,获取URL携带的  ? 参数1 = XXX & 参数2 = XXX ... 形式的参数。

后台代码举例1:(将URL携带的 ? 参数1 = XXX & 参数2 = XXX ... 解析为Map集合)

@RequestMapping(value = "/testRequestParam", method = RequestMethod.POST)
@ResponseBody
private Map testRequestParam(@RequestParam Map condition) {
     Map map = new HashMap();
     String id= (String)condition.get("id");
	 String password= (String)condition.get("password");
	 if ("1".equals(id) && "2".equals(password)) {
	 	map.put("status", 1);
        return map;
	 } else {
        map.put("status", 0);
        return map;
     }      
}

后台代码举例2:(直接获取)

@RequestMapping(value = "/testRequestParam", method = RequestMethod.POST)
@ResponseBody
private Map testRequestParam(@RequestParam("id") String id,@RequestParam("password") String password) {
     Map map = new HashMap();
	 if ("1".equals(id) && "2".equals(password)) {
	 	map.put("status", 1);
        return map;
	 } else {
        map.put("status", 0);
        return map;
     }      
}

前台代码举例:

$.ajax({
                        url: '/testRequestParam?id=1&password=2',
                        type: "POST",
                        dataType: 'json',
                        success: function(data) {
                            if (data.status == 1) {
                                console.log("成功!");
                            } else {
                                console.log("失败!");
                            }
                        },
                        error: function() {
                            console.log("Ajax出错!");
                        }
                    });

说明:

1、前台Ajax请求的时候参数跟在URL后面,形式为 url: ' / 地址  ? 参数 1 = XXX & 参数 2 = XXX ... '

 

你可能感兴趣的:(JavaEE)