Spring Boot如何配置内置Tomcat的maxPostSize值

 更新时间:2021年08月31日 17:02:11   作者:Heartsuit  
这篇文章主要介绍了Spring Boot如何配置内置Tomcat的maxPostSize值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Spring Boot配置内置Tomcat的maxPostSize值

Background

前端页面表单输入数据较多,包含多个文本、多张图片,在数据未压缩的情况下,最终上传失败。

Problem 1

后端报错:

java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector

即:请求数据量过大,超出了最大阈值。

  • Solution

修改Spring Boot内置Tomcat的maxPostsize值,在application.yml配置文件中添加以下内容:

server:  
  tomcat:
    max-http-post-size: -1

Note: 以下配置并不能解决Tomcat请求数据量的限制问题

spring:
  servlet:
    multipart:
      max-file-size: 30Mb
      max-request-size: 100Mb

Problem 2

解决了应用服务器请求数据量过大问题后,在下一步写入DB时又遇到了类似问题,超出了数据库中最大允许数据包默认配置值。

Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (16800061 > 16777216). You can change this value on the server by setting the max_allowed_packet' variable.

  • Solution

修改DB的max_allowed_packet值:

USE demo;
set global max_allowed_packet = 3*1024*1024*10; # 改为30M
show VARIABLES like '%max_allowed_packet%'; # 重启DB连接生效

Note:MySQL中max_allowed_packet 的 默认配置:16777216 = 16 * 1024 * 1024,即16M

Tomcat设置maxPostSize导致Post请求不过去

问题

最近部署项目,用到的Tomcat 版本:7.0.82.0,发现一直登陆不了,查询发现原来前端的数据传递不到后端

排查问题

通过debug日志发现,后端没有接受到前端用户的登陆数据,检查发现Tomcat在server.xml中加入了,maxPostSize=0这个参数,先删除这个参数发现数据过去了

分析

查询了表示maxPostSize=0表示post请求不限制大小的,google了半天才发现,原来从 apache-tomcat-7.0.63 开始,参数 maxPostSize 的含义就变了: 如果将值设置为 0,表示 POST 最大值为 0,不限制 POST 大小需要将值设置为 -1。

在此版本之前设置为 0 表示不限制 POST 大小。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java生成excel报表文件示例

    java生成excel报表文件示例

    本篇文章主要介绍了java生成excel报表文件示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Java SE判断两个文件内容是否相同的多种方法代码

    Java SE判断两个文件内容是否相同的多种方法代码

    昨天因为要帮师兄的忙所以看了一下如何判断两个文件内容是否相同,这里给大家总结下,这篇文章主要给大家介绍了关于Java SE判断两个文件内容是否相同的多种方法,需要的朋友可以参考下
    2023-11-11
  • Jenkins远程部署war包过程图解

    Jenkins远程部署war包过程图解

    这篇文章主要介绍了Jenkins远程部署war包过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • SpringBoot实现登录校验(JWT令牌)

    SpringBoot实现登录校验(JWT令牌)

    JWT全称为JSON Web Token,是一种用于身份验证的开放标准,本文主要介绍了SpringBoot实现登录校验(JWT令牌),具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • java两个线程同时写一个文件

    java两个线程同时写一个文件

    这篇文章主要为大家详细介绍了java两个线程同时写一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java 并发编程中如何创建线程

    Java 并发编程中如何创建线程

    这篇文章主要介绍了Java 并发编程中如何创建线程,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • Java如何优雅地关闭资源try-with-resource及其异常抑制

    Java如何优雅地关闭资源try-with-resource及其异常抑制

    这篇文章主要介绍了Java如何优雅地关闭资源try-with-resource及其异常抑制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • 详细盘点Java中锁的分类

    详细盘点Java中锁的分类

    这篇文章主要介绍了详细盘点Java中锁的分类,Java中的锁是一种多线程编程中的同步机制,用于控制线程对共享资源的访问,防止并发访问时的数据竞争和死锁问题,需要的朋友可以参考下
    2023-08-08
  • 详解mybatis三种分页方式

    详解mybatis三种分页方式

    本文主要介绍了详解mybatis三种分页方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 从内存模型中了解Java final的全部细节

    从内存模型中了解Java final的全部细节

    关于final关键字,它也是我们一个经常用的关键字,可以修饰在类上、或者修饰在变量、方法上,以此看来定义它的一些不可变性!像我们经常使用的String类中,它便是final来修饰的类,并且它的字符数组也是被final所修饰的。但是一些final的一些细节你真的了解过吗
    2022-03-03

最新评论