`
ronon
  • 浏览: 193645 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

捕获浏览器关闭、刷新事件,在窗体关闭时从全局对象里移除当前用户

阅读更多
//以下是主页面的js代码,转的
<script type="text/javascript">
 
 //页面即将关闭事件
 function window.onbeforeunload()   
{        

        //用户点击浏览器右上角关闭按钮或是按alt+F4关闭
        if(event.clientX > document.body.clientWidth && event.clientY<0 || event.altKey)   
        {    
                location.href="UserInfoServlet?flag=exit";
        }

        //用户点击任务栏,右键关闭。s或是按alt+F4关闭
        else if(event.clientY > document.body.clientHeight || event.altKey)
        {
               location.href="UserInfoServlet?flag=exit";
        }
        //其他情况为刷新   
        else
        {   
                
        }   

} 
</script>



//以下是servlet里的代码,自己写的
else if(flag.equals("exit"))
{
                if(session.getAttribute("currentUser")!=null)
                {
				    String username=((UserInfo)session.getAttribute("currentUser")).getYhName();
					//从全局对象里移除该用户
					List<UserInfo> list=(List<UserInfo>)application.getAttribute("allOnLineUsers");
					for(int i=0;i<list.size();i++)
					{
						UserInfo u=list.get(i);
						if(username.equals(u.getYhName()))
						{
							list.remove(i);
							break;
						}
					}
					
					//将改变后的全局集合重新放入全局对象
					application.setAttribute("allOnLineUsers",list);
					
					
					//从session里移除当前用户
					session.removeAttribute("currentUser");
	
                }
                else
                {
                        //跳转    		  
                        request.getRequestDispatcher("login/login.jsp").
                        forward(request,response);
                }
} 
分享到:
评论

相关推荐

    C# 全局快捷键定义 隐藏显示窗体

    在这个示例中,我们定义了一个快捷键`Ctrl+Alt+A`,当用户按下这个组合键时,窗体会在当前隐藏状态下显示,或者在显示状态下隐藏。`GenerateUniqueKeyId`方法用于生成一个唯一的ID,确保每个快捷键都有一个唯一的...

    [VB.NET源码]全局鼠标

    最后,在应用程序启动时调用`SetGlobalMouseHook`,并在关闭时调用`RemoveGlobalMouseHook`,这样就可以实现在整个系统中的全局鼠标事件监听。 这个VB.NET源码示例展示了如何在.NET环境中利用Windows API实现全局...

    HOOK全局组合键显示与隐藏窗体热键实例

    在IT领域,HOOK全局组合键显示与隐藏窗体热键实例是一个常见的应用场景,主要用于实现用户自定义的快捷操作。这个实例涉及到几个关键知识点,包括HOOK技术、组合键处理以及窗体的显示与隐藏。 首先,我们需要理解...

    带历史信息的菜单的MDI窗体(VB6.0源代码编写)

    在VB6.0编程环境中,开发带历史信息的多文档界面(MDI)窗体是一项常见的任务,尤其适用于创建复杂的用户界面,如办公软件或工程应用。MDI窗体允许在一个父窗口内打开多个子窗口,提供了一种组织和管理多个相关任务...

    设置全局鼠标钩子

    全局钩子允许你的应用程序接收在系统任何地方发生的鼠标事件,而不仅仅是你的应用程序窗口内的事件。 首先,我们要理解Windows API中的`SetWindowsHookEx`函数,它是设置钩子的关键。这个函数用于安装一个钩子,...

    delphi写的全局鼠标钩子

    全局鼠标钩子(WH_MOUSE_LL)是低级鼠标钩子的一种,它在用户级别运行,可以捕获所有线程的鼠标消息,包括那些不属于当前应用程序的消息。 创建全局鼠标钩子的主要步骤如下: 1. **设置钩子**:使用`...

    C# 全局钩子示例 (附源码)

    全局钩子是由系统级进程创建的,它可以捕获整个系统中的指定事件,无论这些事件发生在哪个线程或进程。在C#中,我们需要使用P/Invoke(Platform Invoke)来调用WinAPI函数,因为这些函数不在.NET Framework的标准库...

    全局键盘钩子

    4. **在主窗体中使用钩子**:最后,在主窗体中使用刚刚创建的`KeyboardHook`类来启动钩子,并监听特定的按键事件。 ```csharp public partial class MainForm : Form { private KeyboardHook keyboardHook; ...

    JSP中用回车监听按钮事件兼容火狐 IE等主流浏览器

    在JSP(Java Server Pages)中,有时我们需要监听用户按下回车键时触发按钮的事件,但不同浏览器对此事件的处理方式可能会有所不同。本篇文章将详细介绍如何编写兼容火狐和IE的JavaScript代码来实现这一功能。 首先...

    2021-2022计算机二级等级考试试题及答案No.5129.docx

    【计算机二级等级考试知识点】 1. 关键字与数据库设计:在数据库中,关键字(键或码)是...22. 窗体操作:窗体的Load事件在加载窗体时触发,Enabled属性为False时禁止所有交互,UnloadForm1会导致窗体从内存中移除。

    屏蔽鼠标按键_C#_

    在C#编程中,有时我们需要实现特定的功能,例如在某些应用程序中阻止用户的鼠标操作,比如屏蔽鼠标左键、右键和滚轮。这通常通过创建一个全局鼠标钩子来实现,这种技术允许我们监听和处理系统范围内的鼠标事件。在这...

    C# .net 使用键鼠勾子实现屏幕保护

    同时,窗体的`Load`事件中设置钩子,`FormClosing`事件中移除钩子,以确保程序退出时钩子被正确释放。 钩子的实现可能需要用到`DllImport`属性导入相关的Windows API库,例如`user32.dll`,并定义相应的委托类型来...

    c#钩子程序限制键盘键输入实例代码.rar

    5. **解除钩子**:最后,当不再需要监听键盘事件时,使用`UnhookWindowsHookEx`函数移除钩子。 在`WindowsFormsApplication4`这个项目中,开发者可能创建了一个名为`Form1`的窗体,包含了实现上述逻辑的代码。`Form...

    Delphi中的鼠标抓取

    在`Exer6抓取鼠标在其他程序中的形状`这个示例中,开发者可能会创建一个窗体,然后在窗体的某个事件(如`OnMouseMove`)中调用`GetCursorInfo`获取鼠标的当前状态。然后,他们可能会使用GDI(图形设备接口)来绘制...

    Delphi按键转汉字,模拟输入法.rar

    在这个模拟输入法中,消息循环监听键盘事件,当用户按下按键时,程序会接收到对应的消息,并执行相应的汉字转换逻辑。 3. **卸载钩子**: 当不再需要监控键盘输入时,程序需要卸载之前安装的钩子。这涉及到调用`...

    Delphi 键盘钩子(Hook) + 程序最小化

    在 Delphi 中,我们可以使用 `SetWindowsHookEx` 函数来设置全局键盘钩子,这将使我们的程序能够捕获到系统范围内的键盘事件。 以下是实现键盘钩子的基本步骤: 1. 定义钩子回调函数:这个函数将在键盘事件发生时...

    C# 鼠标钩子

    在这样的项目中,你可能会看到一个主窗体类,以及用于处理鼠标事件的代码,可能包括设置钩子、注册事件处理器和释放钩子的方法。 总的来说,C#中的鼠标钩子技术涉及到对Windows API的深入理解和使用,它可以用于...

    vb调用vc的dll实现键盘HOOK

    全局HOOK是一种技术,允许程序在系统级别捕获键盘事件,无论焦点在哪个应用程序上。 **全局键盘HOOK简介** 全局键盘HOOK是一种系统级的钩子,它可以在操作系统中设置,以便在任何进程中产生的键盘事件(如按键按下...

    C# 鼠标 键盘钩子使用例子

    总的来说,这个示例项目是一个很好的起点,帮助开发者了解如何在C#中利用Windows API来实现全局的键盘和鼠标钩子,从而捕获和响应用户的输入事件。通过研究这些代码,你可以学习到C#与底层Windows API交互的方式,...

    C#屏蔽鼠标按键实例源码

    7. **`UnhookWindowsHookEx`**:当不再需要监听鼠标事件时,使用这个函数移除之前设置的钩子,以避免资源泄露。 8. **安全性和性能考虑**:屏蔽鼠标按键可能会对用户体验造成影响,因此在实际应用中需谨慎处理。...

Global site tag (gtag.js) - Google Analytics