response.sendRedirect和html frame配合使用的問題
目前正在做一個web專案,在其中大量的使用了html frame。主要是為了解決區域性重新整理。但是隨之一個有趣的問題就來了。為了防止未登入使用者使用程式,在應用中使用了一個filter,用來判斷使用者是否登入,如果沒有就轉向到登入頁面。原來是使用response的sendRedirect來重新定位,但是由於使用了frame,那麼在給後臺傳送請求時,實際的請求是在frame所包含的頁面中發出的。這樣一來,原本單獨成頁的登入頁面就被包含到了這個frame中,完全和預想的不一樣!!
如果在html頁面中,這樣的問題可以通過連結的target屬性來解決,然而在response中並沒有地方讓我們指定目標的target。如何解決呢?一種方式就是做一個jsp,在jsp使用js來重定向連結到真正的登入頁面,此時我們可以有機會使用target屬性。然後在filter中定向到這個jsp。然而這樣多出來的頁面,給人感覺終究不爽。但是這樣有啟發我們可以這樣做,請看程式碼:
java.io.PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<script>");
out.println("window.open ('/fog/index.htm', '_top')");
out.println("</script>");
out.println("</html>");
對了,我們仍然使用方法一的思想,但是使用response直接生成方法一的中間頁。這樣豈不更爽?!當然,如何瀏覽器禁用js,那我也沒轍了,如有更好的方法,希望能告知。