簡體   English   中英

Servlet 中的會話

[英]Session in Servlets

我是 Servlet 和會話的新手。

我正在使用 Servlet 和 JSP 構建網站。我正在使用 Http 連接。

我正在使用會話,在創建登錄到我的網站會話后,當我一次又一次地單擊瀏覽器后退按鈕時,我可以轉到登錄屏幕,再次單擊瀏覽器轉發選項時,我可以毫無問題地進入網站。

我的期望是當瀏覽器進入登錄屏幕時,會話應該過期,它應該再次要求輸入新密碼。

無論如何我可以用這個http連接來做到這一點。

您可以使顯示登錄 servlet 中的會話無效:

....
HttpSession session = request.getSession(false);
if (session != null) {
    session.invalidate();
}

此解決方案適用於首次訪問和回訪。


如果您只想在這不是第一次訪問時使會話無效,您可以這樣做:

在登錄servlet

HttpSession session = request.getSession(false);
session.setAttribute("loggedUser", loggedUser);

在顯示登錄servlet

HttpSession session = request.getSession(false);
if (session != null) {
    if (session.getAttribute("loggedUser") != null) {
        session.invalidate();
    }
}

請注意,如果您使用標准登錄過程,則可以在 show login 方法中使用

HttpSession session = request.getSession(false);
if (session != null) {
    if (request.getRemoteUser() != null) {
        session.invalidate();
    }
}

一些想法是:

if您的mySession != null ,請在執行任何其他操作之前檢查您的 login.page 。 您可以像 HttpSession mySession= request.getSession(false);一樣獲取會話mySession= request.getSession(false); 如果您的會話不為空,則您的用戶已經登錄過一次。 在這種情況下,您可以使會話mySession.invalidate();無效mySession.invalidate();

總的來說,它應該是這樣的:

   HttpSession mySession = request.getSession(false);
   if (mySession != null) 
   {
       mySession .invalidate();
   }

另一個問題可能是瀏覽器正在訪問您的頁面。

可以在此問題中找到如何在客戶端瀏覽器中禁用此功能的想法。

第三種方法可能是使用javascript 您可以在瀏覽器上添加一個監聽器。 anser 的問題已經在這里avalibale 。

希望有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM