簡體   English   中英

在返回響應之前獲取servlet請求的狀態

[英]Get status of servlet request before the response is returned

晚上好,

我正在編寫Java Servlet(Struts 2,Tomcat,JSP等),它能夠進行一些相當復雜的模擬。 這些最多可能需要2分鍾才能完成,並將返回結果圖表。 計算完成的模擬百分比是微不足道的,因為該過程通過重復相同的計算1000次來工作。

我很想知道是否有人試圖使用客戶端技術來提供完成百分比的任何估計。 即查詢servlet處理以獲得在整個模擬中的各個點處完成的循環數。 然后,這可以在客戶端瀏覽器中顯示為條形。

任何想法,建議,資源將不勝感激。

謝謝,

亞歷克斯

在您的數據庫中,有一個表來維護模擬列表及其服務器計算的進度。

在您的Web應用程序中,每隔幾秒鍾使用AJAX查詢服務器(1-20取決於負載是我要使用的)並更新圖形進度條。 大多數javascript庫都有簡單的基於計時器的AJAX函數來完成這類工作。

有一些細節需要弄清楚,比如完成的模擬是否保留在數據庫中(可能是有用的日志信息),但總的來說,這應該相當簡單。

您可以將響應封裝在mime / multipart消息中並發送更新,直到完成完整響應。

Bugzilla在搜索中使用它來顯示“正在搜索...” - 屏幕直到搜索結果完成。

如果你想使用普通的Struts2,你應該看一下ExecuteAndWait Interceptor

它通過舊的refresh-with-timeout方法工作。 當然,它比一些AJAX的東西具有更低的涼爽系數,但它很簡單並且有效(我已經使用過它)。

Struts2小心(通過使用此攔截器)在單獨的線程中執行action方法(通常需要很長時間),並返回特殊結果wait直到工作完成。 你只需要為這個結果編寫一個顯示一些“等待...”消息的jsp代碼,然后重復刷新同樣的動作,比如(比方說)兩到三秒的超時。 當然,jsp可以訪問動作屬性,因此您可以編寫一些getProgress()方法來顯示進度消息或條形圖。

AJAX是去這里的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM