Car*_*ayo 30 java servlets outputstream
我是否需要从HttpServletResponse中"刷新"OutputStream?
我已经看到了应该关闭servlet输出流吗?我不需要关闭它,但我不清楚是否需要冲洗它.我也应该从容器中得到它吗?
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
byte[] response = getResponse();
String responseType = getResponseType();
response.setContentLength(response.length);
response.setContentType(responseType);
response.getOutputStream().write(response);
response.getOutputStream().flush(); // yes/no/why?
}
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 47
你不需要.servletcontainer将为您刷新并关闭它.顺便说一下,已经隐含地调用了flush.
另请参见Servlet 3.1规范的第5.6章:
5.6关闭响应对象
关闭响应时,容器必须立即将响应缓冲区中的所有剩余内容刷新到客户端.以下事件表明servlet已满足请求并且响应对象将被关闭:
serviceservlet方法的终止.- 响应
setContentLength或setContentLengthLong方法中指定的内容量大于零并已写入响应.- 该
sendError方法被调用.- 该
sendRedirect方法被调用.- 该
complete方法在AsyncContext被调用.
调用flush仍然运行servlet的服务通常是不仅有利于当你有相同的流多个作家,你要切换的作家(如混合二进制/字符数据文件),或当你想保持流指针开放在不确定的时间(例如日志文件).
| 归档时间: |
|
| 查看次数: |
28175 次 |
| 最近记录: |