服务端接收不到ajax post请求的参数

在Tomcat 7.0.63版本之后,当maxPostSize设置为0时,无法正确接收POST请求的参数,导致业务逻辑出现空指针异常。解决方法是将maxPostSize的值从0更改为-1,以确保POST请求的数据字节数不受限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

  服务端使用request.getParameter()接收不到post请求的参数,导致业务逻辑抛出空指针异常。

解决途径 

  tomcat对post请求支持的字节数不受限制的配置发生变化。在tomcat容器在7.0.63版本之前,maxPostSize <= 0 都表示 tomcat对post请求支持的字节数不受限制,从7.0.63版本开始,仅是maxPostSize < 0 表示tomcat对post请求支持的字节数不受限制。将maxPostSize的值由0改为-1,问题得到解决。(maxPostSize在tomcat/conf/server.xml中配置)

转载于:https://www.cnblogs.com/iMichaelHuang/p/10394811.html

### 如何通过 POST 请求正确传递和接收 `List<Integer>` 类型参数 在处理 POST 请求时,如果需要从前端后端传递一个 `List<Integer>` 类型的参数,则可以通过多种方式实现。以下是几种常见的解决方案: #### 方法一:使用 `@RequestParam` 接收数组形式的数据 当前端以查询字符串的形式发送数据时,可以在方法参数上加上 `@RequestParam` 注解来指定参数名称,并将其映射到 Java 的集合类型。 ```java @PostMapping("/test1") @ResponseBody public String test1(@RequestParam("numbers[]") List<Integer> numbers) { for (int number : numbers) { System.out.println(number); } return "success"; } ``` 上述代码中,前端需要将参数命名为 `numbers[]` 并以键值对的方式提交给服务器[^1]。 --- #### 方法二:使用 JSON 数据并通过 `@RequestBody` 解析 另一种常见的方式是让前端以 JSON 格式发送数据,而后端则利用 `@RequestBody` 将其解析为对象或集合。这种方式适用于更复杂的场景。 ##### 后端代码示例: 定义一个封装类用于接收列表数据: ```java public class TheIDList { private List<Integer> idList; public List<Integer> getIDList() { return idList; } public void setIDList(List<Integer> idList) { this.idList = idList; } } ``` 控制器中的方法如下所示: ```java @PostMapping("/test2") @ResponseBody public String test2(@RequestBody TheIDList theIDList) { List<Integer> intList = theIDList.getIDList(); for (int num : intList) { System.out.println(num); } return "success"; } ``` 此处需要注意的是,前端必须按照 JSON 格式的结构发送数据[^4]。 --- #### 方法三:直接绑定 `List<Integer>` Spring MVC 支持直接将请求体中的 JSON 数组绑定到方法参数上的 `List<T>` 类型变量。这种情况下无需额外创建包装类。 ##### 后端代码示例: ```java @PostMapping("/test3") @ResponseBody public String test3(@RequestBody List<Integer> numbers) { for (int number : numbers) { System.out.println(number); } return "success"; } ``` 在这种模式下,前端应提供类似于 `[1, 2, 3]` 这样的纯 JSON 数组作为请求体内容。 --- #### 前端示例(基于 JavaScript) 无论采用哪种方式,都需要确保前端能够正确地构建并发送 HTTP 请求。以下是一个简单的 AJAX 示例,展示如何发送包含整数列表的数据至服务端: ```javascript fetch('http://example.com/test3', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify([1, 2, 3]) }).then(response => response.text()) .then(result => console.log(result)) .catch(error => console.error('Error:', error)); ``` 此脚本会向 `/test3` 路径发起带有 JSON 数组主体的 POST 请求。 --- ### 总结 以上介绍了三种不同的策略来应对 Post 请求中无法正常接收到 `List<Integer>` 类型参数的情况。具体选择取决于实际需求以及前后端交互的设计风格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值