关于这个需求我想不管是大项目还是小项目都是必要的,网上问的人也比较多,同样我也遇到了这样的需求,查阅了不少这方面的资料。然后通过实践,总结了一下。
鼠标点击X窗口关闭IE的同时清空session,最基本的就是处理用户重复登陆需要用到,我想这个的关键在于如何捕捉到关闭IE这个动作,之后再根据自身的需要使用session.invalidate()或者 session.removeAttribute( "xxx ")都是水到渠成的事情。
下面我们就重点看看如何捕捉这个动作:
首先现在的系统的页面结构一般分为2种,框架的和非框架的。
框架的:
<script language="javaScript">
function removeline(){
if(event.clientX<0&&event.clientY<0){
alert("我进入了removeline方法啦,说明捕捉有效!");
document.write('<iframe width="100" height="100" src="XXX.jsp"></iframe><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>');
document.all.WebBrowser.ExecWB(45,1);
}
}
</script>
然后只需要在frameset里面调用该方法即可。
<frameset 。。。。。。。。。。。。。 onUnload="removeline();">
</frameset>
几点注意之处:if(event.clientX<0&&event.clientY<0)这个条件没有对alt+F4关闭IE进行捕捉,如果想添加,要改成if((event.clientX<0&&event.clientY<0&&) ||event.altKey)
Removeline方法中的XXX.JSP是你写具体如何清楚session的页面。
非框架的:
对于 非框架的的处理和框架的会有所不同,实现方法如下;
<script language="javascript">
function window.onunload(){
if((window.screenLeft>=10000 && window.screenTop>=10000)||event.altKey)
{
alert(" 识别到关闭IE啦!!!");
}
}
</script>
By The Way:最后我想说的是,建议系统使用框架的页面结构,这样做的好处很多了,单就权限而言也有不少有利之处。
首先,为什么要清空SESSION呢?清空session肯定是为了根据session来控制什么,实现某种判断,我们所谓的关闭IE时清空session,是指清空服务器端的session,众所周知,对于客户端的session,是随着你关闭IE的同时就自动的销毁的。因此,这样以来,如果使用非框架结构,就会带来一些问题,很简单的一个例子就是你打开了系统的3个页面,然后你X掉其中的一个页面,那么自然触发了清空session的方法,所以这时服务器的对应session应该被清除,而你仍然开着的页面怎么办呢。。。。。。。。。。
框架结构的好处就是始终只运行一个页面,避免了上述问题的产生,当然使用框架的好处还有很多,在这里就不一一赘述了
在下水平有限,如有不妥的地方还请大家不吝指教!
相关推荐
根据提供的文件信息,本文将详细解释如何在ASP.NET应用程序中实现关闭页面时清除Session状态的具体方法及其实现机制。 ### 一、理解Session 在Web开发中,Session是一种常用的技术,用于存储用户会话期间的数据。...
然后,当客户继续访问服务器上的其他资源时,服务器不再为该客户分配新的 Session 对象,直到客户端浏览器关闭、超时或调用 Session 的 invalidate() 方法使其失效,客户端与服务器的会话结束。 Session 对象主要...
检查Session是否未关闭,使用时注意将目录替换为自己项目的目录
以下将详细阐述如何通过一系列步骤有效地关闭Oracle死锁进程,以及如何释放状态为killed的session。 ### 一、识别死锁进程 #### 查找被锁定的过程 首先,我们需要确定哪些进程正处于死锁状态。这可以通过查询`V$...
在IIS7中,Session状态默认是关闭的。要启用Session,首先需要在应用程序的Web.config文件中配置sessionState元素。例如: ```xml <sessionState mode="InProc" timeout="20" /> ``` 这里,`mode`属性可以...
- `close`: 关闭session存储。关闭与memcache的连接。 - `read`: 读取session数据。根据session ID从memcache中获取数据。 - `write`: 写入session数据。将session数据存入memcache。 - `destroy`: 删除session...
解决方法是检查Web服务器或应用程序的session配置,延长session超时时间,或者在用户无操作时通过心跳机制保持session活跃。 **二、服务器配置问题** 服务器配置不正确也可能导致session关闭。例如,如果session...
总结来说,关闭页面时自动清除Session的实用方法主要依赖于浏览器的页面卸载事件和与服务器的交互。虽然存在一些技术和安全上的挑战,但通过合理的架构设计和安全实践,我们可以有效地实现这一功能,提高用户体验和...
5. 得到 Session 的创建时间: 方法:`public long getCreationTime()`, 此方法返回一个 long 类型,通过 Date 类可以取得一个完整的时间。 6. 取得用户最后一次操作的时间: 方法:`public long getLastAccessedTime...
本文将详细介绍一种在用户退出页面时自动清除Session的有效方法。 #### Session简介 Session是一种服务器端技术,用于存储特定用户的会话所需的信息。当用户在应用程序的不同页面之间跳转时,存储在Session中的...
### jsp中session使用方法详解 #### 一、引言 在Web开发中,会话管理是一项非常重要的功能,特别是对于需要保持用户状态的应用程序来说更是如此。在Java Web开发中,`HttpSession`接口提供了在多页面请求之间保存...
当由于非正常原因(如非正常关机)导致浏览器非正常关闭时,服务器可能收不到关闭session的通知,所以会保留这个session直到下一次收到客户端的“iamalive”信息。 Session的基本概念涉及其创建、使用和销毁的时机...
但是,为了实现nosession模式,我们可以使用SessionFactory的createSQLQuery()方法来执行原生的SQL查询,这样就无需打开和关闭Session。以下是一个简单的示例: ```java SessionFactory sessionFactory = ...
当检测到Session丢失时,可以使用JavaScript的`window.location.href`属性进行页面重定向,而不是使用`Response.Redirect()`方法。这是因为后者可能会被浏览器解释为新请求,从而导致SessionID的变化。 5. **...
7. **关闭Session**:最后,关闭Session,释放资源。 ```java session.close(); ``` 在实际开发中,为了更好地管理Session和事务,我们通常会使用DAO(数据访问对象)模式,或者Spring的HibernateTemplate或JPA的...
主要介绍了thinkphp中session和cookie无效的解决方法,涉及针对BOM头的分析与删除方法,具有一定的参考借鉴价值,需要的朋友可以参考下
### Oracle V$SESSION 视图详解与应用 #### 概述 在Oracle数据库管理中,理解和掌握`V$SESSION`视图是非常重要的。这个视图提供了关于当前活动会话(session)的详细信息,包括用户的SID(会话标识符)、执行的SQL...
Session是服务器端的一种存储方式,它允许开发者在用户浏览器关闭前跨页面地跟踪用户状态。当用户访问网站时,服务器会为该用户生成一个唯一的Session ID,并通过cookie存储在客户端。之后,每次请求时,客户端都会...
- 如果参数设为-1,则表示Session永远不会过期,除非用户显式注销或关闭浏览器。 #### 结论 通过上述三种方式,开发者可以根据实际应用场景灵活选择最适合的方式来设定Tomcat中的Session过期时间。无论是全局范围...
如果您使用 getCurrentSession() 方法获取 Session,并在 commit 或 rollback 时没有手动关闭 Session,那么 Session 将自动关闭。但是,如果您使用 openSession() 方法获取 Session,那么您需要手动关闭 Session。 ...