当前位置: 首页 > news >正文

@RequestBody与@ResponseBody的使用

作用

@RequestBody把前台页面传递过来的json数据转换为JavaBean
@ResponseBody这个注解通常使用在控制层(controller)的方法上,其作用是将方法的返回值以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。

注:
@ResponseBody

使用步骤

一、导入依赖jar包

这两个注解不能直接使用,它们依赖与json的jar包

在pom.xml文件里导依赖

<dependencies>
	<!--jackson导包开始-->
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-core</artifactId>
		    <version>2.9.4</version>
		</dependency>
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-databind</artifactId>
		    <version>2.9.4</version>
		</dependency>
	<!--jackson导包结束-->
</dependencies>

注:上面的jar包版本需要注意一下,低版本的jar可能不支持此类操作,如果出现不支持情况的话,就把jar包版本提高,上面的jar包版本是支持的。

二、配置注解处理适配器

在springmvc.xml中配置

<!--处理器映射器,处理器适配器-->
	<mvc:annotation-driven/>
三、前端发送请求

register.jsp

 $.ajax({
   url: "/user/addUser",
     type:"post",
     //需要配置请求头
     contentType: "application/json;charset=utf-8",
     //把js数据转化为json数据
     data:JSON.stringify({"username": username, "password": password}),
     success: function (res) {
         console.log("res"+res);
         if (res>0){
             alert("1注册成功!");
         } else {
             alert("0注册失败!")
         }
     }
 })
后端处理请求

UserController.java

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    UserService userService;
    @RequestMapping("/addUser")
    @ResponseBody
    public int addUser(@RequestBody User user){
        System.out.println("username"+user.getUsername());
        return userService.addUser(user);
    }
}
补充
关于@RequestBody可以处理的请求头格式问题:
  • ReuqestBody 主要是处理json串格式的请求参数,要求使用方指定- - header content-type:application/json
  • RequestBody 通常要求调用方使用post请求
  • RequsetBody参数,不会放在HttpServletRequest的Map中,因此没法通过javax.servlet.ServletRequest#getParameter获取

有兴趣的同学可看Spring之RequestBody的使用姿势小结
了解详细信息

相关文章:

  • spring(@RequestPart)同时上传表单数据和文件
  • 关于23种设计模式的有趣见解
  • Mybatis 批量更新—MySQL设置支持批量更新
  • 清风伴我好读书
  • 设计模式之建造者模式理解
  • Windows Mobile 2nd 开发黄金周(4):Windows Mobile设备编程中的本地存储FAQ
  • 设计模式之桥接模式理解
  • 设计模式之适配器模式理解
  • 今天又一项目采用保证金服务——CSDN外包实践(32)
  • 设计模式之装饰者模式
  • 一本“由厚变薄”的好书
  • 设计模式之组合模式
  • 设计模式之外观模式详解(Facade Pattern)
  • 优化系统七十项Reg文件
  • 设计模式之享元模式详解(FlyWeight Pattern)
  • gulp 教程
  • HomeBrew常规使用教程
  • Java比较器对数组,集合排序
  • js算法-归并排序(merge_sort)
  • maya建模与骨骼动画快速实现人工鱼
  • rc-form之最单纯情况
  • React组件设计模式(一)
  • Vue2 SSR 的优化之旅
  • windows下mongoDB的环境配置
  • 近期前端发展计划
  • 力扣(LeetCode)22
  • 日剧·日综资源集合(建议收藏)
  • 设计模式走一遍---观察者模式
  • 微信小程序填坑清单
  • 终端用户监控:真实用户监控还是模拟监控?
  • 主流的CSS水平和垂直居中技术大全
  • UI设计初学者应该如何入门?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (+4)2.2UML建模图
  • (3)llvm ir转换过程
  • (6)STL算法之转换
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (七)c52学习之旅-中断
  • (七)Java对象在Hibernate持久化层的状态
  • (三分钟)速览传统边缘检测算子
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)Java算法:二分查找
  • (原)本想说脏话,奈何已放下
  • (转)jQuery 基础
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .net6使用Sejil可视化日志
  • @基于大模型的旅游路线推荐方案
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [bzoj 3534][Sdoi2014] 重建
  • [C# 开发技巧]实现属于自己的截图工具