繁体   English   中英

Servlet 3.0包含html页面

[英]Servlet 3.0 include html page

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

  • 发送初始HTML页面
  • 发送后续响应以更新页面

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

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

  • 使用AsyncContext#dispatch:正如我在Internet上阅读的内容一样,它的目的是将最终响应发送到容器以进行渲染
  • 使用RequestDispatcher#forward:由于尝试在OutputStream中写入更多内容而得到IllegalStateException
  • 使用RequestDispatcher#include:如果在调用此方法之前初始化AsyncContext,则request.isAsyncSupported返回true,在调用该方法之后,它返回false。 我读到它调用flushBuffer()并将响应上的提交标志设置为true

另外,在Servlet 3.0规范中,有几行提到从异步servlet到正常servlet的分派是可能的,但将提交答案。 我相信静态的html页面属于该类别...

如果您有关于如何在不影响将流式响应发送回客户端的能力的前提下进行优雅包含的任何想法,请告诉我。

谢谢

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

或者,您也可以使用response.setHeader(“ refresh”,“ 5; URL = nzl.html”)以这种安排简单地刷新整个页面。

我真的不理解您是否需要在不将响应提交到Servlet的情况下发送多个请求。 您是否尝试与服务线程多次交互?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM