jettytomcat对待表单过长问题

为什么80%的码农都做不了架构师?>>>   hot3.png

结论两句话:

 

tomcat知道自己处理不了了,什么也不干过去了

jett知道自己处理不了了,抛个IllegalStateException出来通知一下

jetty默认允许的content-length=200×1000

org.eclipse.jetty.server.Request
public void extractParameters(){if (_baseParameters == null) _baseParameters = new MultiMap(16);if (_paramsExtracted) {if (_parameters==null)_parameters=_baseParameters;return;}_paramsExtracted = true;
....// handle any _content.String encoding = getCharacterEncoding();String content_type = getContentType();if (content_type != null && content_type.length() > 0){content_type = HttpFields.valueParameters(content_type, null);if (MimeTypes.FORM_ENCODED.equalsIgnoreCase(content_type) &&(HttpMethods.POST.equals(getMethod()) || HttpMethods.PUT.equals(getMethod()))){int content_length = getContentLength();if (content_length != 0){try{int maxFormContentSize=-1;if (_context!=null)maxFormContentSize=_context.getContextHandler().getMaxFormContentSize();else{Integer size = (Integer)_connection.getConnector().getServer().getAttribute("org.eclipse.jetty.server.Request.maxFormContentSize");if (size!=null)maxFormContentSize =size.intValue();}if (content_length>maxFormContentSize && maxFormContentSize > 0){throw new IllegalStateException("Form too large"+content_length+">"+maxFormContentSize);}InputStream in = getInputStream();// Add form params to query paramsUrlEncoded.decodeTo(in, _baseParameters, encoding,content_length<0?maxFormContentSize:-1);}catch (IOException e){if (Log.isDebugEnabled())Log.warn(e);elseLog.warn(e.toString());}}}}
....}   }

 

jetty修改content-length方法

 

<Configure id="Server" class="org.eclipse.jetty.server.Server">
...
<Call name="setAttribute"><Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg><Arg><SystemProperty name="org.eclipse.jetty.server.Request.maxFormContentSize" default="200000"/></Arg></Call>
...
</Configure>

启动方式

 

java -jar start.jar -Dorg.eclipse.jetty.server.Request.maxFormContentSize=600000

还有另外一种配置方式

 

<Call class="java.lang.System" name="setProperty"><Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg><Arg>400000</Arg>
</Call>
 

tomcat默认允许的content-length=2×1024×1024

org.apache.catalina.connector.Request
protected void parseParameters() {
......if (!("application/x-www-form-urlencoded".equals(contentType)))return;int len = getContentLength(); if (len > 0) {int maxPostSize = connector.getMaxPostSize();   // tomcat默认大小2*1024*1024  if ((maxPostSize > 0) && (len > maxPostSize)) {if (context.getLogger().isDebugEnabled()) {context.getLogger().debug(sm.getString("coyoteRequest.postTooLarge"));}return;   // 内容超长则直接返回,jetty会抛出IllegalStateException//Parameters 对象没有内容}
.....
}public Map<String, String[]> getParameterMap() {if (parameterMap.isLocked())return parameterMap;Enumeration<String> enumeration = getParameterNames();while (enumeration.hasMoreElements()) {String name = enumeration.nextElement();String[] values = getParameterValues(name);parameterMap.put(name, values);}parameterMap.setLocked(true);return parameterMap;
}public Enumeration<String> getParameterNames() {if (!parametersParsed)parseParameters();return coyoteRequest.getParameters().getParameterNames();
}

转载于:https://my.oschina.net/boltwu/blog/533742

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之Adapter用法总结

Android之Adapter用法总结 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系: Android中所有的Adapter一览: …

那些年,画家发明的黑科技

全世界只有3.14 % 的人关注了爆炸吧知识在现代摄影技术发明之前&#xff0c;获取图像的最佳方式只有绘画。在绘画的时代&#xff0c;如何把事物画的逼真&#xff0c;几乎成为了困扰画家一生的问题。为了准确展现客观世界&#xff0c;让画面看起来更加逼真&#xff0c;古代的艺术…

Android jdwp 自动断开,开启debug调试模式,进入不了,等一会就闪退了!!!!

原因&#xff1a;debug标记加多了art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() ! GetDebugThread() (Thread::Current()0xe1908400, GetDebugThread()0xe1908400) Expected event thread11-16 15:29:18.457 10331-10339/包名 A/art: art/runtime/runt…

Visual Studio 2022发布了,我最爱的5大特性

VS2022今天Visual Studio 2022 终于发布了&#xff0c;你只需要按下⾯地址就可以快速安装你所需要的Visual Studio 2022版本&#xff0c;包括了企业版本&#xff0c;专业版本&#xff0c;以及社区版本。请输入以下⽹址安装最新的Visual Studio 2022 https://aka.ms/InstallVS或…

ASP.NET3.5 企业级项目开发 -- 第二章 数据访问层(DAL)的开发

为什么80%的码农都做不了架构师&#xff1f;>>> ASP.NET3.5 企业级项目开发 &#xff0d;&#xff0d; 第二章 数据访问层(DAL)的开发 前言&#xff1a;本篇主要讲述数据访问层的开发&#xff0c;而且为了大家交流&#xff0c;已经创建企业项目开发团队&…

22张图片倒叙霍金:我爱宇宙也爱这苦乐人生

全世界只有3.14 % 的人关注了爆炸吧知识▲斯蒂芬威廉霍金&#xff08;Stephen William Hawking&#xff09;&#xff0c;1942年1月8日出生于英国牛津&#xff0c;21岁时患上肌肉萎缩性侧索硬化症&#xff08;卢伽雷氏症&#xff09;&#xff0c;全身瘫痪&#xff0c;不能言语&a…

简述LINQ的发展历程

LINQ&#xff1a;最终统治了所有的语言&#xff01;让我们看看LINQ如何彻底改变了.NET中访问数据的方式.NET与其他技术栈的不同之处之一绝对是LINQ&#xff0c;它是Language Integrated Query的首字母缩写。实际上&#xff0c;它是随.NET Framework 3.5和Visual Studio 2008引入…

PHP开发学习-Apache+PHP+MySQL环境搭建

我现在开始php的学习之旅啦&#xff01; 入门&#xff1a;开发环境搭建 组件版本&#xff1a; apache2.2.22 下载地址&#xff1a;http://httpd.apache.org/ php5.4.11 下载地址&#xff1a;http://windows.php.net/download/ mysql5.5.29 下载地址&#xff1a;http://www.mys…

如何不露声色地知道别人是不是单身?

1 世界上竟然会有这么香的东西&#xff01;&#xff01;&#xff01;2 全网吧的电脑都死机了&#xff0c;唯独写论文的电脑没死机&#xff01;3 哈哈哈哈哈哈哈哈哈哈哈好拉风啊&#xff01;&#xff01;4 中国好邻居5 《秋游》&#xff0c;五年级男生写的诗图自我们1班王悦微6…

再谈C#中的委托和事件

写在最前我相信全网关于委托和事件的文章和概述&#xff0c;大家应该已经读过很多篇。但是就我的观察来看&#xff0c;大多数文在讲述这方面概念时&#xff0c;都会用烧开水和狗叫主人的例子来讲述事件怎么工作&#xff0c;这样比喻固然与生活联系紧密&#xff0c;但看多了难免…

js.domReady

2019独角兽企业重金招聘Python工程师标准>>> var dom [], dom_isReady false, domReady function (a) { if (dom_isReady) a(); else dom.push(a) }, dom_fireReady function () { if (!dom_isReady) { if (!document.body) return setTimeout(dom_fireReady, 1…

Android之监测database的改变--notifyChange

我们在ContentProvider的insert,update,delete等改变之后调用getContext().getContentResolver().notifyChange(uri, null);这样就通知那些监测databases变化的observer了&#xff0c;而你的observer可以在一个service里面注册。 以Downloadmanger为例子&#xff1a; 定义Cont…

双一流高校出新规:研究生未经导师同意发论文,不得用于毕业、评奖!

全世界只有3.14 % 的人关注了爆炸吧知识本文转自&#xff1a;募格学术近日&#xff0c;吉林大学研究生院发布文件《吉林大学关于加强对研究生在学期间公开发表论文等学术成果管理的通知》&#xff0c;因内容涉及校内研究生论文发表要求&#xff0c;引起很多研究生的注意。其中包…

android http 三次 握手,面试解析:3次握手与4次挥手

在面试中&#xff0c;三次握手和四次挥手可以说是问的最频繁的一个知识点了&#xff0c;我相信大家也都看过很多关于三次握手与四次挥手的文章。今天的这篇文章&#xff0c;重点是围绕着面试&#xff0c;我们应该掌握哪些比较重要的点&#xff0c;哪些是比较多被面试官给问到的…

微服务组件记事本:Skywalking执行效果 · 多图篇

立冬时节知多少今天立冬&#xff0c;周末两天在家继续研究了下Skywalking&#xff0c;感觉这个组件还是很不错的&#xff0c;无论是设计思想还是架构设计&#xff0c;都能从中受到启发和帮助&#xff0c;建议感兴趣的小伙伴可以看看&#xff0c;当然&#xff0c;如果不感兴趣还…

堆和栈的区别 (转贴)

从其他博客复制过来的&#xff0c;因为这个够详细&#xff0c;转过来学习一下&#xff01; 堆和栈的区别一、预备知识—程序的内存分配一个由c/C编译的程序占用的内存分为以下几个部分1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数…

ios和android交互差异,Android 和 iOS 主要交互区别整理

我简单整理了一下Android 和 iOS 主要的交互区别&#xff0c;如果有遗漏欢迎批评补充。我总结有下面五类区别&#xff1a;一、界面布局形式的差异1 iOS 的 Tab Bar在iOS应用内最多用Tab Bar来切换不同的模块&#xff0c;Tab Bar 也是最受欢迎最容易被用户认知的方式。2 Android…

要比惨吗?看看这个女人

全世界只有3.14 % 的人关注了爆炸吧知识她从不知道辞职是什么滋味&#xff0c;因为被炒的总是她&#xff1b;连续被三家公司炒掉之后&#xff0c;她不得不自己做SOHO。生了双胞胎&#xff0c;本是喜事&#xff1b;但还在月子里&#xff0c;却发现老公出轨。小三还没打走&#x…

【Blog.Core开源】完成升级.NET 6.0

(千呼万唤始出来&#xff0c;_ _ _ _ _ _ _)是不是每个人都已经尝试一遍vs2022和.NET6.0了&#x1f601;&#xff0c;从各个微信群和盆友圈就可见一斑。今天一大早&#xff0c;一位粉丝就发私信&#xff0c;让升级6.0&#xff0c;这么简单的需求&#xff0c;必须满足&#xff0…

Jenkins file一行代码部署.NET程序到K8S

Jenkins file一行代码部署.NET程序什么是Jenkins共享库随着微服务的增多&#xff0c;每个项目的都需要pipline文件&#xff0c;这样的话Pipeline代码冗余度高&#xff0c;并且pipeline的功能越来越复杂。jenkins可以使用Shared Lib&#xff0c;将一些公共的pipeline抽象做成模块…