博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jetty&tomcat对待表单过长问题
阅读量:5952 次
发布时间:2019-06-19

本文共 4182 字,大约阅读时间需要 13 分钟。

  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 params                        UrlEncoded.decodeTo(in, _baseParameters, encoding,content_length<0?maxFormContentSize:-1);                    }                    catch (IOException e)                    {                        if (Log.isDebugEnabled())                            Log.warn(e);                        else                            Log.warn(e.toString());                    }                }            }        }....        }       }

 

jetty修改content-length方法

 

...
org.eclipse.jetty.server.Request.maxFormContentSize
 
...

启动方式

 

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

还有另外一种配置方式

 

org.eclipse.jetty.server.Request.maxFormContentSize
400000
 

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
getParameterMap() { if (parameterMap.isLocked()) return parameterMap; Enumeration
enumeration = getParameterNames(); while (enumeration.hasMoreElements()) { String name = enumeration.nextElement(); String[] values = getParameterValues(name); parameterMap.put(name, values); } parameterMap.setLocked(true); return parameterMap;}public Enumeration
getParameterNames() { if (!parametersParsed) parseParameters(); return coyoteRequest.getParameters().getParameterNames();}

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

你可能感兴趣的文章
“爆炸门”苹果补刀,三星该“哭晕了”!
查看>>
基于linux的3款压力测试工具:Siege,webbench,ab
查看>>
icinga2使用check_snmp_idrac.py监控DELL硬件状态
查看>>
Java基础学习21(代码块)
查看>>
陈松松:无需懂任何视频制作技术,就能做出让客户感觉专业的视频
查看>>
转:用Windows Live Writer在51CTO写博客
查看>>
rsync+ssh的无验证登录
查看>>
我的友情链接
查看>>
ganglia client
查看>>
计算机基础与java
查看>>
ajax的刷与不刷
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
linux系统管理---账号与权限管理
查看>>
我的友情链接
查看>>
Android Target unknown and state offline
查看>>
润乾报表使用EXCEL数据源的方法及改进
查看>>
java并发编程基础
查看>>
我的DOS命令路径定义错了
查看>>
应用SELinux中的目标策略限制进程运行
查看>>
html5页面点击和左右滑动页面滚动
查看>>