如何知道用户关闭浏览器,结束会话?

原创 2004年08月12日 10:26:00
J2EE应用下 用户会话结束后如何回收相关资源
案例描述:
系统平台:
weblogic server 8.1 sp2
技术方案:
Servlet、JSP、EJB、JDBC Connction Pool
工作原理:
用户通过浏览器访问登录到系统时,JSP通过JavaBean建立与 EJB的调用连接,同时EJB对象通过Connection Pool连接后台数据库。用户合法登录后 通过JSP JavaBean调用EJB对象的方法 完成对后台数据库的操作和查询,并由JSP将查询结果返回用户浏览器。

要解决之问题:
当用户非正常Logout(会话超时或者用户直接关闭浏览器),EJB对象所拥有的相关资源(如JDBC Connection Pool)不能正常释放,如果此种情况出现,相关资源会有被耗尽的可能, 在此种情况下应该如何释放EJB对象所拥有的资源。

解决方法:
使用Listener Servlet实现HttpSessionListener接口,该接口有如下两个方法:
public class ServletListener
extends HttpServlet implements HttpSessionListener {
void sessionCreated(HttpSessionEvent se) { }//当会话创建时触发
void sessionDestroyed(HttpSessionEvent se) //当会话结束时触发{
//释放 EJB对象的相关资源
try {
         se.getSession().setAttribute("EJBEQ",null);
      se.getSession().removeAttribute("EJBEQ");     
         }
    catch (Exception ex) {
      System.out.println(ex.toString());
    }
}
}
当会话超时,WEB 容器会调用sessionDestroyed()方法,当该方法调用后 EJB容器会调用ejbRemove()方法实现EJB对象拥有的资源的释放。

Listener Servlet部署文件web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <listener>
    <listener-class> ServletListener </listener-class>
  </listener>
  <session-config>
    <session-timeout>1</session-timeout>
  </session-config>
</web-app>

如何判断是关闭还是刷新网页

我们在写js代码的时候,经常要判断网页是否被关闭了,如果是被关闭了,就执行某段代码,这个可以用HTML的onbeforeunload事件来执行一段js代码,但是如果网页只是被刷新的话,也同样会触发on...
  • sunlen
  • sunlen
  • 2005-03-13 20:27:00
  • 3920

httpclient 如何保持会话

在实际的应用中,我们的联网应用程序里应该有一个HttpClient,并将其用于所有的HTTP通信。这就可能在同一个Http Client同时发出多个请求,也就产生了多线程的问题。幸运的是,在HttpC...
  • woshiwxw765
  • woshiwxw765
  • 2014-03-17 23:39:31
  • 8286

解决web应用用户退出系统后浏览器后退问题

jsp页面禁止缓存设置1.客户端缓存要在中加入类似如下内容:        或            2.在服务器的动态网页中禁止缓存,要加入类似如下脚本  resp...
  • zwj1030711290
  • zwj1030711290
  • 2015-12-30 10:54:13
  • 822

对于Session会不会在关闭浏览器时失效这个问题...

通常情况下,我们所说的失效是指我们无法继续对其进行利用。对此我们必须要清除自己口中所说的失效到底是什么意思。 事实上,当我们关闭浏览器时,我们只是关闭了客户端,而 session 是存储在服务端上的,...
  • lcsy000
  • lcsy000
  • 2017-08-21 19:46:56
  • 10996

实现浏览器关闭登陆的用户自动退出

关闭浏览器响应的js代码如下: 在head中调用js: window.onunload = function(){ if(self.screenTop > 9000) { Out(); }...
  • qq285679784
  • qq285679784
  • 2017-06-03 13:42:58
  • 1142

判断用户关闭浏览器-beforeunload事件

用beforeunload事件,在某些浏览器上(chrome、ie、firefox)可以监听到浏览器关闭操作,能够在关闭之前,弹出一个对话框,让用户选择是否关闭。代码如下: ...
  • zollty
  • zollty
  • 2015-09-13 21:02:07
  • 16393

浏览器关闭后,Session会话结束了么?

今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了?我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保存当前用户的状态信息,初...
  • stanxl
  • stanxl
  • 2015-07-31 20:22:18
  • 26659

会话Session处理

介绍: Session,又被称为会话。是指有始有终的一系列动作/消息。 用户请求访问某个网站域名时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象,存放在服务端,此对...
  • zcl111
  • zcl111
  • 2016-06-01 17:51:30
  • 1306

如何在用户关掉web浏览器窗口前, 进行相应的动作

参考 maison blog 长期以来, 做Web项目, 总会头疼这个问题...
  • zlz_212
  • zlz_212
  • 2006-06-19 10:32:00
  • 2027

Javaweb超链接标签

超链接标签    a标签常用的属性:   href  : 用于指定链接的资源     target: 设置打开新资源的目标。    _Blank 在独立的窗口上打开新资源   _self 在当...
  • qq_15124475
  • qq_15124475
  • 2016-11-23 09:57:25
  • 1756
收藏助手
不良信息举报
您举报文章:如何知道用户关闭浏览器,结束会话?
举报原因:
原因补充:

(最多只允许输入30个字)