在HttpServlet.doGet(...)
我从<{1}}获取OutputStream
HttpServletResponse
写入该输出流时会发生异常,而不是数据,我想发回错误
resp.getOutputStream();
我应该如何处理输出流呢?
我必须关闭它。已写入的数据是否已发送到客户端?我可以以某种方式丢弃该数据,以便客户端只获得错误吗?
答案 0 :(得分:0)
发生某些异常时,它不会转到客户端。因为您向客户端而不是数据发送错误。
来自Java doc。
使用指定的状态代码向客户端发送错误响应并清除缓冲区。
因此客户端不会看到任何书面数据,您不应该关心已经写入的数据。它会被清理干净。
答案 1 :(得分:0)
输出流将发送到客户端,内容类型为text / html。
根据Java doc。
使用指定的状态向客户端发送错误响应并清除缓冲区。服务器默认创建响应,使其看起来像包含指定消息的HTML格式的服务器错误页面,将内容类型设置为“text / html”。
如果响应已提交,则此方法抛出IllegalStateException。使用此方法后,应认为响应已提交,不应写入。
您也可以为web.xml中的预定义response.sendError()代码设置错误页面。
编辑:我添加了一张图片。