springMvc注解之@ResponseBody和@RequestBody详解

发布时间 - 2026-01-11 01:15:51    点击率:

简介

springmvc对json的前后台传输做了很好封装,避免了重复编码的过程,下面来看看常用的@ResponseBody和@RequestBody注解

添加依赖

springmvc对json的处理依赖jackson

<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-core-asl</artifactId>
  <version>1.9.11</version>
</dependency>
<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-mapper-asl</artifactId>
  <version>1.9.11</version>
</dependency>

xml配置

<mvc:annotation-driven />//不要忘了命名空间配置

@ResponseBody

如果传输的是单层json对象,我们后台可以直接用 @RequestParam接收

$.ajax({
  type : "post",
  dataType : "json",
  url : "/testRequestBody",
  data:{
    name:"韦德",
    age:35
  },
  success : function(result) {
  }
});
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestParam Map<String, Object> map) {
 System.out.println(map);// {name=韦德, age=35}
 return "index";
}

如果传输的是多层嵌套json对象,这个时候会就会出现数据丢失问题

@ResponseBody很好的解决了这个问题,它会把前台传输过来的json转化为后台对应的对象

$.ajax({
  type : "post",
  dataType : "json",
  url : "/testRequestBody",
  contentType:"application/json",  
  data:JSON.stringify({
    name:"韦德",
    win:[2006,2012,2013],
    age:35
  }),
  success : function(result) {
  }
});

@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody Map<String, Object> map) {
 System.out.println(map);//{name=韦德, win=[2006, 2012, 2013], age=35}
 return "index";
}

需要注意的是前台需要指定contentType为"application/json"

同时要把json对象转化为String,否则后台不能识别

@ResponseBody

ajax请求返回json格式,往常我们可以这样做

private void writeJson(HttpServletResponse response, Object object) {
 String json = JSON.toJSONString(object);
 response.setCharacterEncoding("UTF-8");
 response.setContentType("application/json; charset=utf-8");
 PrintWriter out = null;
 try {
  out = response.getWriter();
  out.write(json);
 } catch (IOException e) {
  e.printStackTrace();
 } finally {
  if (out != null) {
   out.close();
  }
 }
}

这个时候 @ResponseBody就派上用场了,只需要一个注解,全部搞定

$.ajax({
  type : "post",
  dataType : "json",
  url : "/testResponseBody",
  success : function(result) {
    console.info(result);
  }
});

@RequestMapping("/testResponseBody")
@ResponseBody
public Map<String, Object> testRequestBody() {
 Map<String, Object> result = new HashMap<String, Object>();
 result.put("name", "韦德");
 result.put("age", 35);
 return result;
}

前台console输出

{
  "age": 35,
  "name": "韦德"
}

总结

在网上看到很不错的流程图,作为总结吧

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# responsebody注解  # requestbody注解  # responsebody注解作用  # 解读@RequestBody的正确使用方法  # 快速解决SpringMVC @RequestBody 用map接收请求参数的问题  # 详解SpringMVC @RequestBody接收Json对象字符串  # @ResponseBody 和 @RequestBody 注解的区别  # SpringMVC restful 注解之@RequestBody进行json与object转换  # springmvc @RequestBody String类型参数的使用  # 关于Springboot | @RequestBody 接收到的参数对象属性为空的问题  # Springboot拦截器如何获取@RequestBody参数  # 亲测SpringBoot参数传递及@RequestBody注解---踩过的坑及解决  # SpringBoot中@RequestBody的伪表单提交场景  # 的是  # 韦德  # 很好  # 这个时候  # 转化为  # 就会  # 这个问题  # 要把  # 我们可以  # 这样做  # 来看看  # 很不错  # 可以直接  # 只需要  # 会把  # 需要注意  # 大家多多  # 往常  # 不要忘了  # 派上 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 使用豆包 AI 辅助进行简单网页 HTML 结构设计  如何在阿里云部署织梦网站?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何用虚拟主机快速搭建网站?详细步骤解析  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何选择可靠的免备案建站服务器?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel怎么在Blade中安全地输出原始HTML内容  简单实现jsp分页  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  高防服务器如何保障网站安全无虞?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何用西部建站助手快速创建专业网站?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  详解Huffman编码算法之Java实现  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何登录建站主机?访问步骤全解析  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  Laravel如何保护应用免受CSRF攻击?(原理和示例)  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在腾讯云服务器上快速搭建个人网站?  如何快速搭建二级域名独立网站?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  EditPlus中的正则表达式 实战(4)  Laravel如何为API生成Swagger或OpenAPI文档  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  教你用AI润色文章,让你的文字表达更专业  Android利用动画实现背景逐渐变暗  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  高防服务器租用指南:配置选择与快速部署攻略  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  如何在Windows 2008云服务器安全搭建网站?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  三星、SK海力士获美批准:可向中国出口芯片制造设备  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】