结论两句话:
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方法
<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();
}
分享到:
相关推荐
为了替代Tomcat,只需将应用程序的WAR文件放入Jetty的webapps目录下,Jetty会自动检测并部署应用。 总的来说,Jetty是一个强大且灵活的Web服务器,特别适合用于开发和测试环境,以及对性能和资源管理有严格要求的...
相比于Tomcat,Jetty启动更快,占用资源更少,适合小型项目或集成到其他Java应用中。在本项目中,Jetty作为应用服务器运行Spring MVC应用,处理HTTP请求并返回响应。 5. **Maven**:Maven是Apache软件基金会开发的...
Tomcat笔记主要涵盖了如何访问网页、服务器分类、Tomcat的安装与使用、可能出现的问题以及项目部署等相关内容。 首先,网页的访问方式有两种:本地访问和服务器访问。本地访问简单直接,但若需共享给其他用户,需...
而"平台"在这里可能指的是Web应用程序的运行环境,如Tomcat、Jetty或Apache HTTP Server等。这些平台提供了运行Java Servlets和JavaServer Pages(JSP)的能力,使得开发者可以使用Java语言构建动态、交互式的Web...
确保你的MyEclipse已经配置了正确的服务器,如Tomcat或Jetty,以便正确地部署和运行JSP页面。 总结来说,本教程介绍了如何使用MyEclipse创建Web服务工程,编写JSP页面,构建HTML表单,以及通过Java脚本获取表单提交...
- J2EE容器:Tomcat、Jetty或WebLogic等,每个容器的默认编码设置可能有所差异。 - 数据库:MySQL、Oracle、SQL Server或DB2,它们对字符集的支持情况各异。 - JDBC驱动:不同的驱动对编码处理可能存在区别。 - ...
可能还添加了对其他类型的HTTP客户端库的支持,比如Jetty或Tomcat。此外,可能还修复了一些与不同Java版本或Web容器兼容性有关的问题。 1.3版本: 作为最新版本,1.3可能包含了一些重要的改进,如增强的性能、安全...
Springboot内嵌了Tomcat、Jetty或Undertow等Servlet容器,使得开发者无需部署WAR文件即可运行Spring应用程序。 2. Vue.js:Vue.js是一个构建用户界面的前端JavaScript框架。它允许开发者通过简单的模板语法来声明式...
常见的应用服务器包括Tomcat、Jetty等。Servlet的部署通常涉及到以下步骤: 1. **编写Servlet代码**:实现`Servlet`接口或继承`HttpServlet`。 2. **配置web.xml文件**:在项目的`WEB-INF`目录下,通过`web.xml`...
5. **服务器框架**:熟悉至少一种Java服务器框架,如Jetty或Tomcat的使用和配置。 6. **安全性**:理解文件上传下载的安全风险,如防止文件覆盖、恶意文件上传以及文件权限控制。 为了进一步深入,开发者可能还需要...
3. **易于集成**:Jcaptcha提供Java API,可以方便地集成到各种Java Web应用中,支持Servlet容器,如Tomcat、Jetty等。 4. **高性能**:Jcaptcha设计时考虑了性能问题,能够在高并发环境下快速生成验证码,不影响...
3. **Jetty或Tomcat服务器的上传组件**:一些Web服务器如Jetty和Tomcat可能包含内置的文件上传处理机制,这些组件可能也需要特定的jar包。 4. **JSF (JavaServer Faces)**:如果项目使用JSF作为前端框架,那么可能...
简介 JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台,...Web容器测试通过的有Jetty和Tomcat6 待推出功能:分布式部署,云计算,移动平台开发,规则引擎,代码生成器(eclipse插件) 要求JDK1.6+
它的核心特性是可以内嵌Servlet容器,如Tomcat或Jetty,这样就无需额外的服务器配置即可运行Java应用。在这个“spring-boot入门helloworld”教程中,我们将探讨如何使用Spring Boot创建一个简单的“Hello, World!”...
在处理文件上传功能时,Struts框架会涉及到文件大小的限制,以防止恶意用户上传过大的文件导致服务器资源耗尽。本篇文章将详细探讨Struts文件上传大小限制的问题。 首先,我们需要理解文件上传的基本流程。在Struts...
- **运行环境**:Web项目必须部署在Web容器中(如Tomcat、Jetty等),而普通Java应用可以直接在JVM上运行。 2. **了解Tomcat的配置方式** - **Tomcat配置方式**主要包括以下几种: - **server.xml**:位于`conf...
1. **配置环境**:确保你的应用程序服务器(如Tomcat、Jetty等)已安装并配置好Java环境,同时项目中包含Servlet库,因为文件上传通常涉及到Servlet接口。 2. **添加依赖**:将`JspUpload Beta 1.0`相关的jar文件...
多部分表单数据和 Tomcat 7 Bioko 依赖于 Guice Servlet。 Guice Servlet 使用 javax 来拦截请求并将 servlet 对象的创建委托给注入器。 默认情况下,Tomcat 不支持过滤器中的 。 要启用它,war 应包含文件WEB-INF...
在开发基于Jetty的登录页面时,Eclipse可以帮助编写和管理Java代码,配置Web项目,并通过内置的Tomcat或Jetty插件进行快速启动和调试。 5. **安全实践**:在设计登录页面时,必须考虑安全性,包括密码加密存储、...
5. 将项目部署到Tomcat或其他Servlet容器中,或者使用内置的Jetty或Tomcat插件运行。 6. 访问博客地址https://blog.csdn.net/u014627099/article/details/85040765,跟随教程进行详细步骤,以理解每个部分的工作原理...