繁体   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