2015-11-13 36 views
1

我是Servlets和会话的新手。Servlets中的会话

我使用Servlet和JSP's.I建立一个网站正在使用HTTP连接。

我正在使用会话,登录到我的网站会话创建后,当我点击浏览器后退按钮一次又一次,我可以去登录屏幕,再次点击浏览器转发选项,我可以进入网站没有任何问题。

我的期望是当浏览器进入到登录界面,会话应该过期,应要求再次输入新密码。

有反正我可以用这个HTTP连接做到这一点。

回答

1

你可以在你的节目登录的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(); 
    } 
} 

注意如果你使用,你可以改用在秀登录方法标准的登录过程

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

有反正我可以让浏览器行为,通过任何监听器,这样我可以让系统根据 – VijayManohar7

+0

检查目前还不清楚你问 –

+0

我会解释我的功能要求,在登录期间我将创建一个会话。然后我会保持会话,直到他退出。如果他使用后退选项(在浏览器中)并返回到登录屏幕。我需要使会话无效(如您所建议的那样)。但是我无法区分浏览器返回到登录屏幕或第一次查看登录屏幕。 – VijayManohar7

0

一些想法是:

检查你的login.page,你做其他任何事情之前,你ifmySession != null。您可以像HttpSession一样获得会话mySession= request.getSession(false); 如果您的会话不为空,则您的用户已经登录一次。在这种情况下,你可以取消你的会话mySession.invalidate();

整体而言,这应该looke这样的:

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

另一个问题可能是浏览器chaching页面。

一个想法如何在客户端浏览器禁用此可以在这个question找到。

第三种方法可以使用javascript。您可以在浏览器上添加一个侦听器。 anser的问题已经是avalibale here

希望帮助