如何从HttpServlet关闭HTTP连接

Jas*_*son 10 java tomcat servlet-filters

我在Tomcat 6.0.26中运行servlet.servlet通过HTTP POST接受来自客户端的文件上载.我想停止从HttpServlet端上传文件.我没有运气,尝试了以下方法:

  1. 关闭请求输入流
  2. 发送错误代码HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE并刷新响应
  3. 在过滤器中执行1和2

我用谷歌搜索,但没有找到直接的答案.请告知解决方案.

谢谢.

Bal*_*usC 5

使用标准Servlet和Commons FileUpload API是不可能的.基本上,为了能够立即中止连接,您应该物理地抓住底层套接字并关闭它.但是,此套接字由Web服务器控制.另请参阅此相关问题:如何在没有响应标头的情况下显式终止来自服务器的http连接.

然而,很少有测试证实,当Commons FileUpload的大小超过限制时,它不会将整个文件缓冲在内存中.它将读取输入流,但只是忽略并丢弃读取的字节(也是已读取的字节).因此,内存效率不一定是这里的问题.

要解决实际问题,您基本上希望在客户端而不是服务器端验证文件大小.这可以通过Java Applet或Flash应用程序实现.例如,分别是JumpLoaderSWFUpload.