Servlet 3.0包含html页面

时间:2010-06-24 07:49:59

标签: java html servlets include asynchronous

我正在尝试使用Servlet 3.0 API实现以下行为:

  • 发送初始html页面
  • 发送更新页面的后续回复

这一切都有效,除了我可以发送初始页面而不提交响应的唯一方法是使用HttpResponse Writer手动编写...

我想知道是否有一种方法可以使用类似于RequestDispatcher #include的内容与html页面,而不会遇到AsyncContext的问题。到目前为止我尝试过的一些事情并没有奏效:

  • 使用AsyncContext #datch:就像我在互联网上读到的一样,它注定要向容器发送最终响应以便呈现它
  • 使用RequestDispatcher#forward:由于尝试在OutputStream中写入更多内容而获取IllegalStateException
  • 使用RequestDispatcher #include:如果我在调用此方法之前初始化AsyncContext,则request.isAsyncSupported返回true,在调用该方法后,它返回false。我读到它调用flushBuffer()并在响应
  • 上将commit标志设置为true

另外,在Servlet 3.0规范中,有一些提及从异步servlet到普通servlet的调度是可能的,但是会提交答案。我相信静态html页面属于这个类别......

如果您对如何在不影响仍然将流式响应发送回客户端的情况下完成优雅包含的任何想法,请告诉我。

由于

2 个答案:

答案 0 :(得分:0)

一个解决方案(不是唯一一个):如果它只是一个html页面,那么在html中编写html页面本身并对需要提供更新的serrvlet进行ajax调用。

答案 1 :(得分:0)

在页面上使用静态元素来存储数据并使用requestdispatcher。

或者您也可以使用response.setHeader(" refresh"," 5; URL = officer.html")简单地刷新整个页面。

我真的不明白你需要发送多个请求而不将响应提交给servlet。你想多次与服务线程进行交互吗?