SpringMVC处理ajax请求(@RequestBody注解),ajax向后端传递的数据格式详解

目录

@RequestBody注解简单介绍

@RequestBody获取json格式的请求参数

Servlet方式处理ajax请求


本文讲解两种方式实现SpringMVC与Ajax交互,1、通过SpringMVC提供的注解@RequestBody处理ajax请求;2、通过JavaEE时期的Servlet来处理

@RequestBody注解简单介绍

@RequestBody可以获取请求体信息,使用@RequestBody注解标识控制器方法的形参,当前请求的请求体就会为当前注解所标识的形参赋值

复制代码
<!--此时必须使用post请求方式,因为get请求没有请求体-->
<form th:action="@{/test/RequestBody}" method="post">
  用户名:<input type="text" name="username"><br>
  密码:<input type="password" name="password"><br>
  <input type="submit">
</form>

@RequestMapping("/test/RequestBody")
public String testRequestBody(@RequestBody String requestBody){ 
    System.out.println("requestBody:"+requestBody);
    return "success";
}

输出结果就是在页面填写的值。

@RequestBody获取json格式的请求参数

在使用ajax时发送的数据必须是json字符串

创建一个user实体类对象

复制代码
//将json格式的数据转换为实体类对象
@RequestMapping("/test/RequestBody/json")
public void testRequestBody(@RequestBody User user, HttpServletResponse response) throws IOException, IOException {
    System.out.println(user);
//User{id=null, username='admin', password='123456', age=null, gender='null'}
    response.getWriter().print("hello,axios");
}

前端ajax格式:

复制代码
$.ajax({
  url: 'test/RequestBody/json',
  type: 'POST',
  contentType: 'application/json', // 设置内容类型
  //必须是json字符串
  data: '{"username": "admin", "password":"123456"}' ,//JSON.stringify(data), // 将数据转换为JSON字符串
  dataType: 'text', // 指定预期的服务器响应数据类型也为JSON
  success: function(response) {
    alert(response);
  },
  error: function(xhr, status, error) {
    console.error('Error:', error);
  }
});

Servlet方式处理ajax请求

不用加上@RequestBody注解

复制代码
@RequestMapping("/test/RequestOOBody/json")
public void testRequestBody(User user, HttpServletResponse response) throws IOException, IOException {
    System.out.println(user);
    //User{id=null, username='admin', password='123456', age=null, gender='null'}
    response.getWriter().print("hello,axios");
}

前端

复制代码
$.ajax({
  url: 'test/RequestOOBody/json',
  type: 'POST',
  contentType: 'application/x-www-form-urlencoded', // 设置内容类型
  data: "username=shang&password=123456" ,
  dataType: 'text', // 指定预期的服务器响应数据类型也为JSON
  success: function(response) {
    alert(response);
  },
  error: function(xhr, status, error) {
    console.error('Error:', error);
  }
});

这两种方式的区别在前端ajax请求时数据的类型要求,使用SpringMVC注解方式就必须传json字符串形式的数据。传统JavaEE方式就是&连接的字符串,contentType也要随之改变。

相关推荐
小江的记录本2 分钟前
【RabbitMQ】RabbitMQ核心知识体系全解(5大核心模块:Exchange类型、消息确认机制、死信队列、延迟队列、镜像队列)
java·前端·分布式·后端·spring·rabbitmq·mvc
!停8 分钟前
C++入门—内存管理
java·jvm·c++
海参崴-11 分钟前
C语言与C++语言发展历史详解
java·c语言·c++
无尽的罚坐人生15 分钟前
hot 100 146. LRU 缓存
java·开发语言·缓存
好家伙VCC15 分钟前
**发散创新:基于算子融合的深度学习推理优化实战**在现代AI部署场景
java·人工智能·python·深度学习
wd5i8kA8i18 分钟前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
java·开发语言·php
却话巴山夜雨时i22 分钟前
Java大厂面试:从Spring Boot到微服务的深度剖析
java·spring boot·spring cloud·微服务·分布式事务·大厂面试
希望永不加班27 分钟前
SpringBoot 缓存注解:@Cacheable/@CacheEvict 使用
java·spring boot·spring·缓存·mybatis
KhalilRuan33 分钟前
HybridCLR的底层原理
java·开发语言
源码站~35 分钟前
基于Spring Boot+Vue3的烹饪交流学习系统 设计与实现
java·vue.js·spring boot·后端·mysql·毕业设计·毕设