如何判断用户在从 Java servlet 下载过程中是否点击了取消?

GC_*_*GC_ 5 java servlets download request-cancelling

如何判断用户在从 Java servlet 下载过程中是否点击了取消?我用 IE 似乎会发生什么,输出流 println() 块。使用过的点击取消,但有没有办法让它超时或类似的东西?

Bal*_*usC 5

包起来OutputStream#write()#flush()#close()try-catch一块上IOException。如果被捕获,通常意味着最终用户已中止请求。

为了更进一步,您还可以捕获更多 servlet 容器特定的异常,例如ClientAbortExceptionTomcat 和克隆(它是 的子类IOException),但这将使您的 web 应用程序代码无法移植到其他 servlet 容器。


更新:要回到阻塞问题,您想flush()在写入单个数据块后调用。这实际上会将数据发送到客户端并导致IOException底层套接字关闭。