session過期跳轉(zhuǎn)到登陸頁面并跳出iframe框架的兩個方法

方法一:
一般使用filter過濾用戶是否登錄,如果用戶沒有登陸則轉(zhuǎn)向登陸頁面,這時候可以使用response.sendRedirect()。
但當(dāng)在頁面上使用了iframe后,發(fā)現(xiàn)被重定向的只是父頁面中的iframe區(qū)域,登陸頁面內(nèi)容顯示在該區(qū)域中。說明在過濾器中發(fā)送重定向請求時,是在iframe頁面發(fā)送的。錯誤的代碼如下:

HttpServletRequest req = (HttpServletRequest) request;  
Visitor visitor = (Visitor) req.getSession().getAttribute("visitor");  
if (visitor == null)  {  
     ((HttpServletResponse) response).sendRedirect("/smpc/login/login.jsp");  
}  
chain.doFilter(request, response);

因為response.sendRedirect()沒有target屬性,但html頁面和js中有,于是,當(dāng)判斷出用戶沒有訪問權(quán)限時,我們可以在jsp中使用js來轉(zhuǎn)向到真正的登錄頁面。在filter類的doFilter方法中添加如下代碼:(跳轉(zhuǎn)的路徑通過request.getRequestURI()獲取)

User user = (User) req.getSession().getAttribute("session_user");  
if (user == null)  {  
    java.io.PrintWriter out = response.getWriter();  
    out.println("<html>");  
    out.println("<script>");  
    out.println("window.open ('/smpc/login/login.jsp','_top')");  
    out.println("</script>");  
    out.println("</html>");  
    return;
}  

方法二:
在你想控制跳轉(zhuǎn)的頁面,比如login.jsp中的<head>與</head>之間加入以下代碼:

<script language="JavaScript"> 
if (window != top) 
top.location.href = location.href; 
</script>

來源:http://1008610086.blog.51cto.com/4995677/1538464

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容