參考:http://www.cnblogs.com/qixin622/p/6548076.html
在網頁編程時,我們經常需要處理,當session過期時,我們要跳到登陸頁面讓用戶登陸,由於我們可能用到IFrame框架,所以我們我登陸頁面需要顯示在整個頁面,而不是一個IFrame中,大部分的網友是用下面的代碼進行實現的。
在過濾器中寫如下代碼:
printWriter out = response.getWriter();
out.write("<script>window.parent.location.href='login.jsp'</script>");
我的實現方式是:跟普通過濾器的寫法一樣,跳到某個action,讓action決定要跳到的頁面,然后在登錄頁面寫上這么一段代碼
<script language="JavaScript"> //判斷當前窗口是否有頂級窗口,如果有就讓當前的窗口的地址欄發生變化, //這樣就可以讓登陸窗口顯示在整個窗口了 function loadTopWindow(){ if (window.top!=null && window.top.document.URL!=document.URL){ window.top.location= document.URL; } } </script> </head> <!--在body的寫上onload事件要調用的方法--> <body onload="loadTopWindow()">
兩種方式都是用js進行實現,各有優缺點
第一種方式的缺點是要Java中寫了JavaScript代碼,這樣的代碼風格不是很好,優點是編寫簡單;
第二種方式的缺點是要發送兩次請求,在登陸頁面比較大的情況下,這個方式確實不太好,好在一般的登錄頁面都比較簡單,優點是易於維護,在寫是時候,只要把這么一段代碼復制進去就可以了,所以我個人推薦使用第二種方式。