Java – HttpServlet:响应何时发送到客户端?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java – HttpServlet:响应何时发送到客户端?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1647字,纯文字阅读大概需要3分钟。
内容图文
![Java – HttpServlet:响应何时发送到客户端?](/upload/InfoBanner/zyjiaocheng/724/584036dcb5de4e6c94742b943525d27a.jpg)
我很少尝试一些HttpServlet的东西来更好地理解它.我想构建一个请求传入的场景,我需要相应地尽可能快地发送响应,然后在servlet中做更多的工作.根据我目前的理解,只有在返回doGet或doPost方法时才应将响应发送给客户端.但是从我的例子中,响应已经在servlet中的命令处理中被发送回客户端.因此,当我没想到它时,它已经被返回了.
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(DisplayHeader.class.getName()).log(Level.SEVERE, null, ex);
}
response.setContentType("text/plain; charset=ISO-8859-1");
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
final StringWriter sw = new StringWriter();
PrintWriter out = new PrintWriter(sw);
//TODO most be implemented SynchronizedStatusCodeDimo
out.println("StatusCode=0");
out.println("StatusText=Accepted");
out.println("paymentType=PaymentXY");
out = response.getWriter();
out.print(sw.toString());
out.flush();
out.close();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(DisplayHeader.class.getName()).log(Level.SEVERE, null, ex);
} }
这里发生了什么,通过Firebug我看到我已经收到了510ms后产生的响应.因为睡觉,我以为我需要超过1500毫秒.我的理解是基于这篇文章:Link
解决方法:
HttpServletResponse将由您的servlet容器(Tomcat,Jetty等)控制.
如果写入响应,servlet容器会在定义的缓冲区大小后自动刷新响应(例如9000字节后的Tomcat).通常你可以配置它(在Tomcat中使用参数socketBuffer).
这是它的工作方式,如果你不自己控制它.
在您的情况下,您可以通过自己控制响应,并在调用response.flush()后将响应发送给客户端.
如果你写了更多的9000 Byte(在Tomcat中),响应将自动发送(在所有的中间).
(原谅我的英文不好)
内容总结
以上是互联网集市为您收集整理的Java – HttpServlet:响应何时发送到客户端?全部内容,希望文章能够帮你解决Java – HttpServlet:响应何时发送到客户端?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。