如何在发送错误时关闭HttpServletResponse OutputStream

时间:2014-03-06 13:59:10

标签: java servlets error-handling

HttpServlet.doGet(...)我从<{1}}获取OutputStream

HttpServletResponse

写入该输出流时会发生异常,而不是数据,我想发回错误

resp.getOutputStream();

我应该如何处理输出流呢?

我必须关闭它。已写入的数据是否已发送到客户端?我可以以某种方式丢弃该数据,以便客户端只获得错误吗?

2 个答案:

答案 0 :(得分:0)

发生某些异常时,它不会转到客户端。因为您向客户端而不是数据发送错误。

来自Java doc。

  

使用指定的状态代码向客户端发送错误响应并清除缓冲区。

因此客户端不会看到任何书面数据,您不应该关心已经写入的数据。它会被清理干净。

答案 1 :(得分:0)

enter image description here enter image description here输出流将发送到客户端,内容类型为text / html。

根据Java doc。

使用指定的状态向客户端发送错误响应并清除缓冲区。服务器默认创建响应,使其看起来像包含指定消息的HTML格式的服务器错误页面,将内容类型设置为“text / html”。

如果响应已提交,则此方法抛出IllegalStateException。使用此方法后,应认为响应已提交,不应写入。

您也可以为web.xml中的预定义response.sendError()代码设置错误页面。

编辑:我添加了一张图片。