实例讲解:
1.先创建一个实体类Student:

public class Student {private String sname;private String password;private Integer age;public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"sname='" + sname + '\'' +", password='" + password + '\'' +", age=" + age +'}';}
}

2.编写Ajax异步请求:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head><title>响应数据和结果视图</title><script src="js/jquery.min.js"></script><script>// 页面加载,绑定单击事件$(function () {$("#btn").click(function () {// 发送Ajax请求$.ajax({// 编写json格式,设置属性和值url:"response/testAjax",contentType:"application/json;charset=UTF-8",data:'{"sname":"王小风","password":"123","age":18}',dataType:"json",type:"post",success:function (data) {// data服务器端响应的json的数据,进行解析alert(data);alert(data.sname);alert(data.age);alert(data.password);}})});});</script>
</head>
<body>
<button id="btn">发送Ajax的请求</button>
</body>
</html>

注意:json数据中的sname,age,password必须与实体类中的属性相互对应。否则,后端接收的json数据为null.

3.因为要将json数据封装到JavaBean中,需要使用jackson的jar包:

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency><dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency><dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>

4.模拟异步请求响应:

    /*** 模拟异步请求响应*/@RequestMapping(value = "/testAjax")public @ResponseBody Student testAjax(@RequestBody Student student){System.out.println("testAjax方法执行了");System.out.println(student);// 模拟数据库student.setSname("王大风");student.setAge(81);return student;}

说明:
@RequestBody的作用就是从前端获取json数据(这里只改动模拟异步请求响应的代码):

    /*** 模拟异步请求响应*/@RequestMapping(value = "/testAjax")public void testAjax(@RequestBody String body){System.out.println("testAjax方法执行了");System.out.println(body);}

控制台打印结果:

@ResponseBody的作用是将后端封装到JavaBean中的数据响应给前端,前端通过Ajax中的以下代码接收:

5.运行结果:



SpringMVC @RequestBody和@ResponseBody注解 以及 Ajax异步请求相关推荐

  1. 【SpringMVC】SpringMVC: @RequestBody 和@ResponseBody 注解详解 NoHandlerFoundException

    文章目录 1.美图 2.概述 3.@RequestBody 3.1 使用时机 4.@ResponseBody 4.1 错误案例 4.2 苦苦寻找 4.3 思考升华 5.HttpMessageConve ...

  2. 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案

    在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案 参考文章: (1)在SpringMVC中使用@Reque ...

  3. SpringMVC @RequestBody和@ResponseBody原理解析

    SpringMVC @RequestBody和@ResponseBody原理解析 前言 @RequestBody作用是将http请求解析为对应的对象.例如: http请求的参数(application ...

  4. SpringMVC中使用@ResponseBody注解标注业务方法

    SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面 导包: 除了一些spring的包之外,还需要jackson-annotations.jar ...

  5. maven工程 java 实现文件上传 SSM ajax异步请求上传

    java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: 1 < ...

  6. ajax异步请求数据库实现级联下拉菜单。

    ajax实现级联下拉菜单,使用Springboot实现. 思路很简单,使用ajax异步请求数据库数据即可. 文末有项目源码! 实现效果: 废话不多说,现在我们来开始实现! 第一步. 创建三张表:省.市 ...

  7. ajax异步处理代码实现,原生JS代码实现一个Ajax异步请求

    异步加载的方式 (1) defer,只支持IE (2) async: (3) 创建script,插入到DOM中,加载完毕后callBack 实现ajax之前必须要创建一个 XMLHttpRequest ...

  8. php 返回字符串给aja,解决ajax异步请求返回的是字符串问题

    1.返回结果差异 js获取后打印res.code无结果.因为返回数据格式不正确. php文件添加header头: header('Content-Type:application/json;'); 或 ...

  9. html弹窗赋值给查询框,bootstrap模态框动态赋值, ajax异步请求数据后给id为queryInfo的模态框赋值并弹出模态框(JS)...

    /查询单个 function query(id) { $.ajax({ url : "/small/productServlet", async : true, type : &q ...

最新文章

  1. shell脚本——调试(-n / -x /-c)
  2. 移动硬盘函数不正确要如何寻回资料
  3. 将旧版本从Java EE 5减少到7
  4. For循环(十分重要)
  5. python数据格式化后导入数据库_如何为数据库导入重新格式化这个json?
  6. Anaconda+django写出第一个web app(十一)
  7. Nebula3渲染层: Graphics
  8. vpp之node节点分析二: qs类型
  9. 赴微软 软件开发测试工程师。
  10. VMware Workstation Pro安装
  11. 计算机英语四六级对调剂有影响吗,四六级没过影响考研复试和调剂吗?各高校标准不一...
  12. 如何在敏捷中实施变更管理
  13. Google pixel 原生安卓出现 WiFi 网络受限、优化网速、网络无法连接问题
  14. 力扣 1723. 完成所有工作的最短时间 二分+回溯+剪枝/状压dp
  15. leetcode643. 子数组最大平均数 I
  16. 怎么把视频中的人声和背景伴奏分离?
  17. 零信任网络ZTNA及SDP概念理解 身份认证 安当加密
  18. Pycharm无法编辑问题
  19. [SV]SystemVerilog進程之fork join专题详解及案例分析
  20. cannot create temp file for here-document: No space left on device

热门文章

  1. Creo3.0轴孔配合不能旋转
  2. 以麦当劳,肯德基优惠券接口数据为例进行的数据解析方法,简单易懂
  3. JavaScript--比较
  4. 最新大数据分析/数学建模-MATLAB多套视频教程合集+200多本MATLAB技术文档+电子书
  5. MATLAB计算K近邻
  6. 如何编写一个模块化交易系统EA
  7. 查询显示器的DPI、点距、刷新率
  8. 从500彩票网站下载历史数据
  9. 计算机二级access基础知识点,全国计算机二级Access考试知识点
  10. Embed标签的功能、语法和属性设置