在項目中,因為為了給頁面分層次,就使用了 内嵌iframe 的分了三個框。在子頁面進行操作的時候,如果session逾時,就要被攔截器攔截重新回到首頁進行登入,但是在sub頁
面 ,進行操作的時候,如果session逾時,需要跳轉到首頁進行登入的話,首頁的頁面就嵌在sub頁面進行顯示 了,這樣顯然是不符合邏輯了,應該是跳回到最頂層的父頁面.
錯誤的代碼如下:
HttpSession session = request.getSession();
Object obj = session.getAttribute(Constant.LOGIN_USER);
if (obj == null) {
response.sendRedirect(request.getContextPath() + "/index.jsp");
return false;
}
因為response.sendRedirect()沒有target屬性,但html頁面和js中有,于是,當判斷出使用者沒有通路權限時,我們可以在jsp中使用js來轉向到真正的登入頁面。
正确跳轉到父頁面的代碼:
HttpSession session = request.getSession();
Object obj = session.getAttribute(Constant.LOGIN_USER);
if (obj == null) {
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<script>");
out.println("window.open ('"+request.getContextPath()+"/index.html','_top')");
out.println("</script>");
out.println("</html>");
return false;
}