好的,所以我基本上想要一個會話檢查器,它將請求特定會話名稱屬性並檢查是否存在。如果不存在,則會重定向到登錄頁面。這聽起來很簡單,但我有重定向的問題。Java - 檢查會話並重定向如果不存在
當我刪除重定向,只是打印if語句下的一些文本,它會打印在頁面上。但是當我嘗試重定向時,它不會。 的代碼包含在頁面的開始時,控制器的一個文件下有
<jsp:include page="/radnikSession" />
我寫它看起來像這樣的代碼。
String id;
HttpSession session = request.getSession(false);
id = (String)session.getAttribute("sessionRadnikID");
if(id == null) {
//out.println("No session id");
response.sendRedirect("login.jsp");
}
我在做什麼錯?
警惕的是'session'可能爲空! 'getSession'返回當前會話;如果沒有,則會返回null,除非該方法傳遞了'true',這會導致創建並返回全新的會話。無論如何,你看到了什麼行爲,因爲你提供的內容應該可以工作(假設你沒有遇到NullPointerException)。 – nasukkin
你可能不想檢查'null',而且如果它有任何內容。我停止對幾乎所有的字符串進行'null'檢查,並切換到'StringUtils.isBlank(...)'和'StringUtils.isNotBlank(...)'。正如nasukkin所說,如果會話爲空,你也可能會隱藏一個隱藏的錯誤。 –
將'false'傳遞給'request.getSession()'有什麼意義?如果請求不是會話的一部分,那麼你肯定會創建一個,對嗎?否則,登錄頁面將在哪裏存儲會話屬性?如果你傳遞'true'(或者使用'getSession()'的其他版本),那麼你不必擔心返回null。 –