session超時跳出iframe並跳到登陸頁面
阿新 • • 發佈:2019-02-09
在網頁程式設計時,我們經常需要處理,當session過期時,我們要跳到登陸頁面讓使用者登陸,由於我們可能用到IFrame框架,所以我們我登陸頁面需要顯示在整個頁面,而不是一個IFrame中,大部分的網友是用下面的程式碼進行實現的。
我的實現方式是:跟普通過濾器的寫法一樣,跳到某個action,讓action決定要跳到的頁面,然後在登入頁面寫上這麼一段程式碼
[html] view plain copy print?
在過濾器中寫如下程式碼:
[java] view plain copy print?- printWriter out = response.getWriter();
- out.write("<script>window.parent.location.href='login.jsp'</script>");
我的實現方式是:跟普通過濾器的寫法一樣,跳到某個action,讓action決定要跳到的頁面,然後在登入頁面寫上這麼一段程式碼
[html] view plain copy print?
- <scriptlanguage="JavaScript">
- //判斷當前視窗是否有頂級視窗,如果有就讓當前的視窗的位址列發生變化,
- //這樣就可以讓登陸視窗顯示在整個視窗了
- function loadTopWindow(){
- if (window.top!=null && window.top.document.URL!=document.URL){
- window.top.location= document.URL;
- }
- }
- </script>
- </head>
- <!--在body的寫上onload事件要呼叫的方法-->
- <bodyonload="loadTopWindow()">
兩種方式都是用js進行實現,各有優缺點
第一種方式的缺點是要Java中寫了JavaScript程式碼,這樣的程式碼風格不是很好,優點是編寫簡單;
第二種方式的缺點是要傳送兩次請求,在登陸頁面比較大的情況下,這個方式確實不太好,好在一般的登入頁面都比較簡單,優點是易於維護,在寫是時候,只要把這麼一段程式碼複製進去就可以了,所以我個人推薦使用第二種方式。
在web.xml中定義session過期時間:
- <!-- session超時定義,單位為分鐘 -->
- <session-config>
- <session-timeout>2</session-timeout>
- </session-config>
用JavaScript解決session過期,跳轉到首頁並跳出iframe
可以在登入頁面login.jsp中<head> </head>中新增如下程式碼
- <scripttype="text/javascript">
- if (window != top)
- top.location.href = location.href;
- </script>