`

HttpSessionBindingListener的valueUnbound方法问题

阅读更多
学习Servlet监听器:
对于HttpSessionBindingListener的疑问:
写的代码如下:
创建一个监听器类:
package listener;

import javax.servlet.http.*;

public class BindingSession implements HttpSessionBindingListener{
	public void valueBound(HttpSessionBindingEvent se){
		System.out.println("bvalueBound:"+se.getName()+"-->"+se.getValue());
	}
	
	public void valueUnbound(HttpSessionBindingEvent se){
		System.out.println("bvalueUnbound:"+se.getName()+"-->"+se.getValue());
	}
}


写JSP页面
session.setAttribute("s4",new BindingSession());
session.removeAttribute("s4");


在第一次访问的时候很正常:
输出:bvalueBound:S4--->listener.BindingSession@4123

但问题是:在刷新之后,出现了
bvalueBound:S4--->listener.BindingSession@4331
bvalueUnbound:S4--->null

为什么unbound方法被触发了呢?还输出一个null,对于unbound不是在移除session,session超时的时候才被触发的吗?这个很不解!
分享到:
评论
2 楼 easion_zms 2009-01-20  
楼上正解!!!
1 楼 east_java 2008-11-27  
刷新之后,S4重新被赋值,也就是相当于别的listener中的attributeReplaced方法
在HttpSessionBindingListener中只有两个方法.
valueUnbound方法允当了replaced与remove两个方法的功能..
在replaced的时候,由于S4的旧引用被丢失了,所以有个null.

相关推荐

    基于HttpSessionBindingListener的登陆日志

    valueBound方法在对象绑定到HttpSession时被调用,而valueUnbound方法在对象从HttpSession中解绑时被调用。 在我们的例子中,我们创建了一个LogInfo类,该类实现了HttpSessionBindingListener接口。该类有两个属性...

    HttpSessionBindingListener实现在线人员查看即人数统计

    4. **监听解绑事件**:在`valueUnbound()`方法中,减少在线人数计数。当用户注销、关闭浏览器或session超时时,对应的session对象将被解绑,此时应相应地更新在线人数。 5. **显示在线人数**:你可以创建一个...

    HttpSessionBindingListener获取在线用户数(转)

    `HttpSessionBindingListener`是`HttpSession`的一个监听器接口,它包含两个方法:`valueBound`和`valueUnbound`。当对象被绑定到`HttpSession`(例如,用`session.setAttribute()`添加对象)时,`valueBound`方法会...

    jsp 统计在线人数利用HttpSessionListener、HttpSessionBindingListener

    jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。

    HttpSessionListener 和HttpSessionBindingListener的区别 单点登录

    给定的部分内容中并没有提供完整的`OnlineUserBindingListener`实现细节,但从描述中我们可以推断其实现了`HttpSessionBindingListener`接口,并通过`valueBound`和`valueUnbound`方法来处理对象的绑定和解绑事件。...

    利用session监听器实现一个客户不能再两个客户端登录。

    `valueBound`方法会在某个对象被绑定到Session时调用,而`valueUnbound`方法则在对象从Session中解除绑定时调用。 ```java public class UserSessionListener implements HttpSessionBindingListener { @Override ...

    JSP中基于Session的在线用户统计分析

    同时,当Session结束或用户注销时,通过`valueUnbound`方法将Session从活跃列表中移除。 以下是一个简化的`HttpSessionBinding`类示例: ```java public class HttpSessionBinding implements javax.servlet....

    用JSP程序实现统计当前在线人数

    `HttpSessionBindingListener`接口提供两个回调方法:`valueBound()`和`valueUnbound()`。当一个对象被添加到`HttpSession`时,`valueBound()`方法被调用;当一个对象从`HttpSession`中移除时,`valueUnbound()`方法...

    Listener监听器1

    public void valueUnbound(HttpSessionBindingEvent arg0) { System.out.println("从session中解除绑定"); } public void sessionDidActivate(HttpSessionEvent arg0) { System.out.println("存入磁盘中"); } ...

    java-servlet-api.doc

    这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包,Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。 有关规范 你也许对下面的这些Internet规范感兴趣,这些规范将直接影响到...

    JSP统计在线人数实现

    4. 当用户注销或会话超时时,`valueUnbound()`方法被调用,从`users`向量中移除用户名,输出注销信息及新的在线人数。 5. 在JSP页面上,用户可以看到自己是否已在线,或者看到其他用户是否在线。 总结一下,实现JSP...

    jsp统计在线人数.txt

    - `public void valueUnbound(HttpSessionBindingEvent e)`: 当一个对象从会话中解除绑定时调用此方法。 #### 方法详解 - **getCount() 方法**:返回在线用户的总数。首先使用 `trimToSize()` 方法优化内部存储的 ...

    servlet 监听器范例

    同时,在用户登出或会话过期时,会触发`valueUnbound()`方法。 通过这个“servlet 监听器范例”,我们不仅学习了如何使用Servlet监听器来统计在线用户,还了解了如何跟踪用户登录状态。这个示例对于理解和实现在...

    Servlet中监听器介绍.doc

    `valueBound`和`valueUnbound`方法分别在对象绑定和解绑时触发。 3. **ServletRequest监听器**: - `ServletRequestListener`接口:监听请求的创建和结束,`requestInitialized`方法在请求开始处理时调用,`...

    jsp完成对在线人数的统计!

    - **删除用户**:用户注销或会话超时时,调用`valueUnbound`方法从`Vector`中移除该用户。 - **查询用户**:提供`existUser`方法检查指定用户是否已在线。 - **获取在线用户数量**:通过`getCount`方法返回当前在线...

    Redis-Session-同步

    这通常通过实现HttpSessionBindingListener接口,覆盖valueBound和valueUnbound方法来完成。 3. **读写操作**:当服务器接收到请求时,首先从Redis中获取对应的Session数据。如果Session不存在,就创建一个新的...

    javax.servlet.http使用帮助.docx

    - **valueUnbound(HttpSessionBindingEvent se)**:当属性从会话中解除绑定时调用。 - **HttpSessionContext** - **定义**:表示一组相关的 HttpSession 对象的集合。 - **方法** - **getSession(String id)**...

    Servlet中的八大Listener

    - 实现了这个接口的对象在被绑定到或从session中解绑时,会自动调用`valueBound()`和`valueUnbound()`方法,提供了对session内对象状态改变的直接控制。 8. **HttpSessionActivationListener**: - `...

Global site tag (gtag.js) - Google Analytics