java json 长度限制_tomcat解决POST请求过长的限制

spreadJS是纯前端的产品,不限制后端的技术平台。随着java用户使用人数的增多,经常会使用服务器端的Excel IO进行导入,导出操作,要知道spreadJS的Excel IO操作是需要将spreadJS页面中的内容序列化成JSON(ssjson)然后传输至后台进行处理。然而很多时候,用户的spread中的内容很多,序列化成JSON往往很长。这时候就可能存在问题。

我们都知道GET请求是有长度限制的,HTTP协议规范没有对URL长度进行限制,这个限制是浏览器对其进行的限制,不同的浏览器之间限制也会不同。例如:IE下URL长度的限制是2083字符,但在chrome下长度限制却是8182字符。

我们都知道如果请求过长需要用POST方式去发送请求,这里很多人存在一个误区,认为POST方式没有大小限制。这个说法没错,POST本身是没有大小限制,HTTP协议规范也没有进行大小限制,但是通常服务器会在这里做限制以保证服务器的处理能力。例如:在Tomcat下取消POST大小的限制(Tomcat默认2M); 但是有时候序列化的JSON长度会超过2M就会出现请求内容为空的情况。

这个时候我们需要根据实际情况来修改服务器的配置,Tomcat中进行如下修改:打开tomcat目录下的conf目录,打开server.xml 文件,找到标签,如果其中存在maxPostSize属性,那么修改属性的值(单位是KB),如果不存在maxPostSize属性,则需手动在标签中添加maxPostSize然后设置该属性的值。例如:这样设置后POST请求的最大长度就被设置成了10M,另外如果需要不限制POST请求的最大长度,那么设置maxPostSize="0"即可。

其他服务器如果出现类似情况,可以上网查询相关配置进行设置。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb 中,发送 POST 请求有两种常用方式:form 表单方式和 JSON 格式数据方式。 1. form 表单方式 发送 form 表单 POST 请求的步骤如下: 1)创建一个 URL 对象,指定要访问的服务器地址; 2)打开 URL 的连接; 3)设置连接的一些属性,如请求方法(POST)、是否使用缓存等; 4)设置请求头,指定请求的内容类型为 application/x-www-form-urlencoded; 5)获取连接的输出流,将请求参数写入流中; 6)读取服务器的响应,获取响应结果。 下面是一个示例代码: ```java URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); // 设置请求头 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 写入请求参数 String postData = "param1=value1&param2=value2"; OutputStream outputStream = conn.getOutputStream(); outputStream.write(postData.getBytes("UTF-8")); outputStream.flush(); // 读取响应结果 InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); System.out.println(response.toString()); ``` 2. JSON 格式数据方式 发送 JSON 格式数据的 POST 请求的步骤如下: 1)创建一个 URL 对象,指定要访问的服务器地址; 2)打开 URL 的连接; 3)设置连接的一些属性,如请求方法(POST)、是否使用缓存等; 4)设置请求头,指定请求的内容类型为 application/json; 5)获取连接的输出流,将请求参数写入流中; 6)读取服务器的响应,获取响应结果。 下面是一个示例代码: ```java URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); // 设置请求头 conn.setRequestProperty("Content-Type", "application/json"); // 写入请求参数 String postData = "{\"param1\":\"value1\",\"param2\":\"value2\"}"; OutputStream outputStream = conn.getOutputStream(); outputStream.write(postData.getBytes("UTF-8")); outputStream.flush(); // 读取响应结果 InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); System.out.println(response.toString()); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值