簡體   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