异常或错误后java中断HttpServletRequest

异常或错误后java中断HttpServletRequest,java,spring,jsp,file-upload,spring-webflow,Java,Spring,Jsp,File Upload,Spring Webflow,当抛出异常时,我一直在寻找一些东西来分解我的请求。 我有一个文件上传在我的jsp不能超过2MB。 有jsp验证,但在使用internet explorer 8或9时必须有额外的安全性,因为在那里不支持文件API,或者在客户端禁用javascript时 我有一个来自spring的CommonMultipartResolver,当上传一个更大的文件时,它会抛出一个MaxUploadSizeExceedeException,可以正确处理我的请求。当我的ExceptionResolver处理请求并发回M

当抛出异常时,我一直在寻找一些东西来分解我的请求。 我有一个文件上传在我的jsp不能超过2MB。 有jsp验证,但在使用internet explorer 8或9时必须有额外的安全性,因为在那里不支持文件API,或者在客户端禁用javascript时

我有一个来自spring的CommonMultipartResolver,当上传一个更大的文件时,它会抛出一个MaxUploadSizeExceedeException,可以正确处理我的请求。当我的ExceptionResolver处理请求并发回ModelAndView时

真正的问题发生在我上传一个文件时,例如4GB。异常由multipartResolver引发,异常由exceptionhandler捕获,并且尝试返回modelAndView。尝试返回modelAndView需要很长时间才能返回,因为请求正在处理中,文件必须完全上载

我想打破我的请求,停止处理文件上传,有这样做的经验的人

有jsp验证,但在使用internet explorer 8或9时必须有额外的安全性,因为在那里不支持文件API,或者在客户端禁用javascript时

视情况而定。您是否需要完全支持阻止脚本和/或使用旧浏览器的人


如果您可以忍受这些情况,只要遇到错误,您就可以在过大的请求到达应用服务器之前阻止它们,即使用Apache指令。

如果不将其直接流式传输到服务器,您无法确定文件大小。服务器无法访问客户端的文件系统。如果您想检查文件大小并在客户端进行分解,您需要使用客户端文件上载库,例如have look,我不需要jsp验证,实际上我需要java验证以解决额外的安全问题,因为您将始终能够绕过上载文件的前端。所以我想分解请求,而不是处理整个文件。处理文件时会引发异常,但当我重定向到我的原始页面或其他页面时,这并不重要,因为文件仍需要处理,所以需要花费很长时间…@Bond JavaBond我无法使用chuncked file upload,因为IE8和IE9不支持此功能。这也可以通过在没有前端的情况下执行restcall来绕过。。。我只需要java来取消处理和重定向的请求。为了自身安全,我确实需要完全支持这些人,如果有几个人在服务器上抛出100GB或更大的文件,它将继续处理,并且在某一点上我的服务器内存将满,整个事情将崩溃……完全支持意味着应用程序处理错误,所以你可以返回一个不错的错误页面。LimitRequestBody足以使您的服务器安全,但客户端将看到由浏览器生成的错误-afaik apache只是终止连接并发送HTTP 4xx代码?不确定,我只是用它来保护一些SOAP服务,以防请求太大。我想试试这个,但我不知道如何让它工作。我有一个运行在Java6和Spring3中的jboss,我想在我的webflow中上传一个文件,它是在xml配置中定义的。我猜你没有足够的信息,但我真的不知道你需要知道什么来帮助我。我只想在一个特定的流程步骤中指定它,因为我不允许那里有大文件,在其他地方可能有一个大文件上传。我不必在jboss的启动属性文件中设置它,对吗?您的jboss是否在公共IP上侦听端口80异常,但可能,或者您是否有某种反向代理,即apache和ajp,nginx和proxy_pass设置?如果jboss监听端口80,客户端直接连接到jboss,或者您需要向没有js或旧IEs的客户端提供良好的反馈,那么您应该阅读有关分块/多部分上传处理的内容,正如@Java Bond建议的那样。如果你有一个反向代理,在那里阻止请求将减轻你jboss的一些负担,因为这些请求甚至不会到达它。我的jboss正在侦听8080,因此没有反向代理,我的客户端直接连接到我的jboss,它想将bytearray传递到流中的下一步。但是我的multipartinvoker正在拦截它来检查bytearray大小,并抛出一个异常,因为文件太大了。之后,我想立即返回页面,而不必通过tearray处理其余的请求。上载无法完成,因为我想返回,我只想扔掉我的requestscope,从流程步骤重新开始。