我們有一個向servlet提交請求的jsp頁面。但是servlet必須在大量文件中進行搜索,並且需要時間。與此同時,如果客戶端關閉,servlet仍在搜索,這是對我們資源的浪費。無論如何,我們可以知道客戶端是否仍在等待響應?例如:我們應該從servlet知道我們的jsp頁面是否關閉,以便我們可以停止搜索。無論如何,我們從servlet知道客戶端是否還在等待
回答
Http是一種無狀態協議。所以在技術上沒有連接狀態來檢查。但是,以下是您如何模擬連接狀態。
您需要在服務器和客戶端(網絡瀏覽器)上添加處理。
在服務器上,您可以在會話對象中存儲聽到節拍的值。心跳意味着上次客戶發出請求的時間戳。你建立一個閾值。比方說10秒。如果客戶端(網絡瀏覽器)超過10秒沒有發送心跳信息,則放棄進程。
在客戶端(網絡瀏覽器)上,您可以使用JavaScript每隔10秒發送一次心跳信息。使用Ajax將消息發送到服務器。這又告訴服務器客戶端還在等待。
注意!您需要確保在服務器上建立會話。服務器需要在會話範圍內存儲熱量節拍消息。客戶端每個會話將有多個請求。
最後,JSP是一個servlet。 JSP是編寫servlet的另一種方式。您的容器(例如Tomcat)將JSP編譯到servlet中。 JSP在服務器上運行,不會在Web瀏覽器中運行。是的,您可以從servlet(或JSP)將Javascript和HTML發送到Web瀏覽器。
希望有所幫助。 祝你好運。
您的解決方案看起來可行。我會嘗試和更新。感謝您對此作出迴應。 – user2031973
很高興有幫助:)請考慮接受我的回答(I.E.將我的答案標記爲已接受)。僅供參考 - 這可能需要一點點,但我現在描述的模式工作。我在製作中看到它:) – lorinpa
不好意思問你這個。我在javascript/ajax中不太好。是否有任何示例可以引用將心跳發送到我的servlet。 – user2031973
- 1. 如何從客戶端知道表是否已更新
- 2. 如何知道它是新客戶還是編輯客戶
- 3. 如何知道任務是取消還是等待期結束
- 4. 如何知道客戶是否還活着
- 5. 如何知道客戶端是否在Awesome WM中被殺掉
- 6. Mqtt客戶端如何知道另一個客戶端是否連接
- 7. 如何讓我的用戶知道他們輸入了多少個數字,無論是負數還是負數
- 8. Rails PDFKit等待客戶端
- 9. 如何知道客戶端是否已關閉連接?
- 10. JSF - Richfaces - 如何知道會話是否超時(客戶端上)
- 11. 如何知道數據包是否發送到客戶端
- 12. 如何知道我是在查看換行還是回車等?
- 13. 如何等待函數知道從
- 14. 如何知道php文件是否僅在客戶端從js調用?
- 15. .NET AutoResetEvent:如何知道進程是否在等待(方法WaitOne)?
- 16. python如何知道子進程是否正在等待輸入
- 17. Android:客戶端還沒有準備好..等待進程在線
- 18. 如何知道客戶端是否存在XMPP服務器中的帳戶?
- 19. 如何知道通道斷開是否來自Netty客戶端中的客戶端或服務器
- 20. 我們如何知道removeClass操作是成功還是失敗?
- 21. 如何從servlet響應客戶端?
- 22. 在客戶端等待Meteor.call結果
- 23. 如何從jdbc連接知道客戶端ip端口
- 24. 我們如何知道我們是僅使用WSS還是使用MOSS?
- 25. Devexpress mvc擴展。無論這些擴展是服務器端還是客戶端?
- 26. 如何知道在客戶端PC上是否有任何PDF閱讀器
- 27. C#:我如何等待10秒讓客戶端調用方法?
- 28. gRPC Java:如何知道客戶端是否突然中斷(服務器端)?
- 29. 從客戶端調用servlet
- 30. 我如何知道我的Tomcat是否支持Servlet 3.0?
我把它不可能,因爲一旦請求發送到服務器它不可能同時檢查客戶端是否可用。 – Kick
這聽起來像是一個設計問題。如果您的Web請求產生了長時間運行的任務,那麼最好將其異步執行(針對Web請求),然後將結果呈現給Web。不知道更多關於你想要做什麼的事情很難確定。 – matthudson