2012-05-17 47 views
0

我有mainmenu.jsp,login.jsp和logout.jsp。該流程類似於以下如何根據onload函數中的結果顯示html內容

的login.jsp ---> mainmenu.jsp ---> logout.jsp

第一用戶能夠看到的login.jsp併成功登錄後,用戶可以請參閱mainmenu.jsp,其中單擊註銷按鈕用戶被轉發到logout.jsp文件。在logout.jsp文件中,如果使用點擊瀏覽器後退按鈕,他/她可以看到前一頁(mainmenu.jsp),但我想顯示login.jsp頁面。爲了避免這種情況,我在main menu.jsp的加載中使用ajax調用來檢查變量。我可以將頁面重定向到login.jsp。這是一個像閃爍問題的問題。在服務器返回結果之前,我的mainmenu.jsp文件被加載。服務器返回結果後,頁面被重定向到登錄頁面。我想限制當前頁面加載,直到任何響應來自服務器。我怎樣才能做到這一點? 我使用下面的代碼在主菜單中

$(window).load(function() { 

       $.ajaxSetup({async:false}); //execute synchronously 
       var isSessionExists = ""; 

       $.post("getSession", {}, function(data, textStatus, xhrObject) { 
        isSessionExists = data.split("=")[1]; 

       }); 
       $.ajaxSetup({async:true}); 
       if((isSessionExists.indexOf('NO')>=0)){ 
//     alert("...inside condition...") 
        top.location="index.jsp"; 
       }else{ 
        alert("....BREAK..."+isSessionExists) 
       } 

      }); 
+0

可能的setInterval的組合的onload並保持閃爍的部分與CSS隱藏,直到你準備好了嗎? – Jeff

+0

你也使用任何控制器(MVC)嗎?如果是,則最好檢查控制器是否授權用戶查看頁面(換句話說,用戶已登錄或註銷)。從控制器您可以返回正確的頁面。如果你不使用MVC,那麼我想在服務器端必須有可以做這種操作的東西。使用JavaScript來做這樣的事情是可能的,但不可取。 –

回答

1

嘗試在JSP中添加以下代碼片段

<% 
    response.setHeader("Pragma","no-cache"); // HTTP 1.0 
    response.setHeader("Cache-Control","no-store"); // HTTP 1.1 
    response.setDateHeader("Expires", 0); 
%> 

而且通過這個優秀的explantion Prevent Going Back after LOGOUT

+0

+1爲最後一個通信網,並且鏈接「防止LOGOUT退回」。這正是我正在尋找的。 –

相關問題