2013-05-10 76 views
4

我試圖在用戶會話過期或連接未激活時刷新我的網頁。我嘗試了很多代碼,但似乎沒有工作。我用最後的代碼是response.setheader(「Refresh」,「0」)不起作用

if(session.getAttribute("connection") != null && !session.getAttribute("connection").equals("")){ 
      conn = (DBConnection) session.getAttribute("connection"); 
      if(conn == null){ 
        response.setContentType("text/html"); 
        response.setHeader("Refresh", "3"); 
        return; 
       } 
      }else{ 
       response.setContentType("text/html"); 
       response.setHeader("Refresh", "3"); 
       return; 
      } 

我也試過response.sendRedirect是()和request.getrequestdispatcher.forward(),但它並沒有正常工作。該servlet正在被期望json對象的javascript調用。

+0

當它實際過期時正在訪問HttpSession? – Oneb 2013-05-10 06:34:16

+3

刷新元標記和標題只有在您發送代理將要解釋的html文檔時纔有效。這聽起來像你只是發回一些JavaScript正在使用的數據。如果是這種情況,那麼JavaScript將需要觸發代理進行頁面刷新。 – BevynQ 2013-05-10 06:35:04

+0

在你的代碼中If條件的目的是什麼?只需添加'response.setContentType(「text/html」);''和'response.setHeader(「Refresh」,「3」);' – 2013-05-10 06:36:26

回答

1

您無法直接從該servlet直接在客戶端上執行命令。請注意0​​依賴來自客戶端的請求和來自服務器的響應。

所以,如果沒有請求從客戶端進行,那麼沒有任何東西可以從服務器發送(僅僅是因爲服務器不必響應的請求)

我知道你已經看到了這個功能,並且是它可以做到。但不是這樣。 Ajax是在這裏你最好的選擇......(發送定期的請求,並從服務器獲取等響應回)

0

如果你想有一個頁面被刷新的使用在頁頭以下meta標籤

<meta http-equiv="refresh" content="5">