@RequestParam @RequestBody @ResponseBody区别 (1)
来源:互联网 发布:linux安卓环境搭建 编辑:程序博客网 时间:2024/06/03 14:15
@requestBody注解的使用
@RequestBody这个一般处理的是在ajax请求中声明contentType: “application/json; charset=utf-8”时候。也就是json数据格式或者 xml 数据格式1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
2、通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
例如说以下情况:
$.ajax({
url:”/login”,
type:”POST”,
data:’{“userName”:”admin”,”pwd”,”admin123”}’,
content-type:”application/json charset=utf-8”,
success:function(data){
alert(“request success ! “);
}});
@requestMapping(“/login”)
public void login(@requestBody String userName,@requestBody String pwd){
System.out.println(userName+” :”+pwd);
}
这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:
String userName; String pwd;
那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上
需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。
3、特殊情况 @requestBody也可以用来处理content-type类型为application/x-www-form-urlcoded的内容,只不过这种方式
不是很常用,在处理这类请求的时候,@requestBody会将处理结果放到一个MultiValueMap<String,String>
中,这种情况一般在,特殊情况下才会使用,例如jQuery easyUI的datagrid请求数据的时候需要使用到这种方式、小型项目只创建一个POJO类的话也可以使用这种接受方式
@RequestParam
@RequestParam这个一般就是在ajax里面没有声明contentType的时候,为默认的. 另外使用form提交数据的就只能使用@RequestParam接收。
@responseBody注解的使用
1、@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
2、@RequestMapping(“/login”)
@ResponseBody
public User login(User user){
return user;
}
User字段:userName pwd
那么在前台接收到的数据为:’{“userName”:”xxx”,”pwd”:”xxx”}’
效果等同于如下代码:
@RequestMapping(“/login”)
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}
- @RequestParam @RequestBody @ResponseBody区别 (1)
- @RequestParam,@PathVariable,@ResponseBody,@RequestBody,@ModelAttribute
- @RequestBody和@RequestParam区别
- @RequestBody和@RequestParam区别
- requestparam和requestbody区别
- @RequestBody和@RequestParam区别
- @RequestBody和@RequestParam区别
- @RequestBody和@RequestParam区别
- @RequestParam,@PathVariable,@ResponseBody,@RequestBody,@ModelAttribute学习
- @ResponseBody、@RequestBody区别
- @PathVariable、@RequestParam、@RequestBody的区别
- spring @RequestBody和@RequestParam区别
- @RequestParam和@RequestBody的区别-------springMVC
- springMVC中 @RequestParam和@RequestBody的区别
- 详述 @ResponseBody 和 @RequestBody 注解的区别
- @ResponseBody 和 @RequestBody 注解的区别
- @ResponseBody 和 @RequestBody 注解的区别
- @ResponseBody 和 @RequestBody 注解的区别
- Nginx rtmp 模块安装及配置及遇到的问题
- 如何用C语言封装 C++的类
- 双缓冲技术
- Java Web 自定义MVC框架
- jxl导入/导出excel
- @RequestParam @RequestBody @ResponseBody区别 (1)
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 解决
- TF Learn入门 —— 简介
- linux yum命令详解 yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能
- if语句的陷阱
- 对于js中网络接口websocket,二进制数组arraybuffer,视图对象dataview学习记录。
- Struts2笔记10 向值栈放入或获取数据
- 批处理bat命令--获取当前盘符、当前目录
- Netty物联网高并发系统第一季