最近做一个项目要求实现一个功能。
就是如果用户A已经登录到系统中。如果其他人再使用用户A的帐号在其他机器或者浏览器上登录,都会登录失败。只能等待用户A在系统中注销或者Session超时才可以登录。
这个项目是用java web相关技术实现的。 其实实现的原理比较简单就是将用户登录后将session保存到一段共享的内存中(程序中是用静态的HashTable保存所有的Session)。
其中当用户的session过期失效后。我发现map中的session对象依然存在。不过从HashTable得到这个过期后的session对象调用getAttribute()方法时。会抛出一个session已经失效的异常。而在session失效后用request.getSession()取得的Session对象并不是保存在HashTable中的session对象。两者有着不同的sessionID 和 session对象地址。 前者可以使用getAttribute()这样的方法,不过由于是新的对象所以没有属性值。
这样的结果可以推出服务器对session过期管理的结论: session的过期失效,实际上服务器会重新创建一个session对象将对原来session对象的引用指向新的session并将sessionID发送给客户端保存以替换原来的sessionID。 而旧的session对象由于客户端的sessionID已经修改将不会被获得。旧的session对象等待jvm垃圾回收进程进行垃圾回收。
* 注: 不过这个项目中由于session过期后session的引用保存在静态的HashTable中使得就得session对象不会被垃圾回收器回收。 HashTable会随着系统的运行变得越来越大。注意到这个问题后。使用了session监听器当session失效后捕获其session对象并从HashTable中移出。从而达到理想的效果
分享到:
相关推荐
在Web开发中,Session是用于跟踪用户状态的一种技术。当用户登录网站后,服务器会创建一个Session对象,并将其关联到用户的浏览器。这个Session对象通常包含用户的一些关键信息,如用户名、权限等。然而,为了安全...
### 设定Tomcat中Session过期时间的三种方式 在Web开发中,Session管理是确保用户状态跟踪的重要机制之一。Tomcat作为一款广泛使用的Java应用服务器及Servlet容器,提供了多种方式来设定Session的有效时长。这有助...
在实际使用过程中,用户可能会遇到各种问题,其中"phpcms web发布session过期问题"是一个常见的困扰。这个问题通常出现在用户登录后,在一段时间不操作或者刷新页面时,系统提示session已过期,导致用户需要重新登录...
在本资源中,“30天学通java web项目案例开发(第三章)源码”是一个针对初学者的Java Web项目开发教程,旨在帮助学习者在30天内掌握Java Web开发的基本技能。第三章通常会深入到实际项目构建的关键概念和技术,通过...
本文主要介绍了Java Web实现session过期后自动跳转到登陆页功能,涉及java过滤器针对session的判断与跳转相关操作技巧。 一、建立基本过滤器 要实现session过期后自动跳转到登陆页功能,需要建立一个基本的过滤器...
方法一: 在后台应用程序中设置:Session.Timeout = 1; 注意:1、此方法可以设置在一个... 您可能感兴趣的文章:php 如何设置一个严格控制过期时间的sessionjava设置session过期时间的实现方法php中实现精确设置se
总的来说,Java Web开发中设置Session过期时间的方法提供了灵活性,可以根据实际需求选择合适的策略。合理地管理Session的生命周期有助于提高应用程序的性能和安全性。希望以上内容对你的Java编程实践有所帮助。
综上所述,Session过期问题是Web开发中的重要环节,涉及到用户身份验证、用户体验和系统安全。开发者需要根据具体需求选择合适的实现方式,并进行合理的设计和优化。通过下载的"session过期问题"文件,可以更深入地...
总的来说,理解Java Web开发中的基本原理和常见问题,结合源码阅读和使用工具进行调试,可以帮助我们更好地解决问题。对于“zengliang”这个文件,它可能是与本文相关的源码或日志文件,通过分析这些文件,我们可以...
在Web开发中,Session是用于跟踪用户状态的一种机制。它在服务器端存储用户信息,当用户在多个页面间导航时,服务器可以通过Session识别并维护用户的特定数据。在本文中,我们将详细讨论如何设置Session的过期时间...
在《Java Web开发实战宝典》的第11章中,王国辉等作者...王国辉等作者的《Java Web开发实战宝典》第11章无疑为初学者和有经验的开发者提供了一个宝贵的资源,帮助他们更好地理解和实践Java Web开发中的核心概念和技术。
在本压缩包中,我们聚焦于《Java Web开发实战宝典》一书的第14章,由王国辉等作者撰写。这一章涵盖了从14.09到14.16的不同部分,包含了丰富的Java Web开发实战知识。以下是根据章节标题和文件名推断出的Java Web开发...
在Java Web开发中,Session是HTTP协议中一种用于在客户端和服务器之间保持状态的重要机制。在本例中,“java中使用session购物车的简单例子”是通过Servlet技术实现的一个应用场景,旨在帮助开发者理解如何利用...
"项目访问时间过长session过期提醒"这个话题涉及到的是如何配置Web应用程序,以便在用户的会话过期时自动跳转到特定的过期页面,提醒用户重新登录。下面我们将详细讲解实现这一功能的关键步骤和技术。 首先,我们...
7. **会话管理**:学习如何在Java Web中管理用户的会话,包括使用session对象来存储用户信息,以及处理会话过期和安全性问题。 8. **请求转发与重定向**:掌握请求转发(Request Forwarding)和重定向(Redirecting...
**Cookie** 与 **Session** 是两种在 Web 开发中用于跟踪用户会话的重要技术。它们的主要目标是在客户端和服务端之间保持状态。 - **Cookie** 机制采用了客户端保持状态的方案。这意味着用户的浏览器将存储特定的...
在Java Web开发中,Cookie、Session和验证码是三个非常重要的概念,它们对于用户身份验证、会话管理以及防止恶意自动操作起着关键作用。本文将深入探讨这些概念,并通过实例来展示它们在实际项目中的应用。 首先,...
总的来说,Java Session监听器是Web应用中不可或缺的一部分,它提供了一种透明且强大的方式来管理和优化Session的生命周期,同时也能帮助我们更好地理解和控制用户的在线行为。通过深入理解和熟练运用Session监听器...