HttpSessionBindingListener和HttpSessionAttributeListener是两个经常让初学者弄混的监听器,其实它们有很大的区别。这2个监听器在文章中简称为BindingListener和AttributeListener.
1.BindingListener有2个方法,valueBound(HttpSessinBindingEvent)和valueUnbount(HttpSessionBindingEvent)。实现BindingListener接口的对象被绑
<script type="text/javascript"></script><script type="text/javascript"></script><script type="text/javascript"></script><script type="text/javascript"></script><script type="text/javascript"></script>
定到session时触发valueBound事件,解除绑定时触发valueUnbound事件。举例来说:
BindingListener
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->public class UserObject implements HttpSessionBindingListener
{
public void valueBound(HttpSessionBindingEvent event)
{
System.out.println("触发绑定事件!");
}
public void valueUnbound(HttpSessionBindingEvent event)
{
System.out.println("解除和session的绑定");
}
}
UserObject user = new UserObject();
当把该监听器保存到session中,session.setAttribute("user",user)时就会触发valueBound事件.
当该监听器从session中移除时即session.removeAttribute("user"),触发valueUnbound事件;session失效或超时
时也会触发valueUnbound事件。
注意:只有当该监听器(UserObject)保存到session中或从session移除时才会触发事件,其他没有实现该listener对象保存到session时不会触发该事件。
2.AttributeListener接口有3个方法,attributeAdded(HttpSessionBindingEvent),attributeRemoved(HttpSessionBindingEvent),
attributeReplaced(HttpSeesionEvent)。当在session中添加、移除或更改属性值时会触发相应的事件。
例子:
AttributeListener
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->MyListener implements HttpSessionAttributeListener
{
attributeAdded(HttpSessionBindingEvenet event)
{
System.out.println("有对象加入session中");
}
attributeRemoved(HttpSessionBindingEvent event)
{
System.out.println("有对象从session中移除");
}
attributeReplaced(HttpSessionBindingEvent event)
{
System.out.println("属性值改变");
}
}
OtherObject other = new OtherObject();
当有对象添加到session中时,session.setAttribute("object",other)触发attributeAdded事件,
当该对象从session移除时,session.removeAttribute("object")触发attriubteRemoved事件,
当该属性的值发生变化时, session.replaceAttribute("object",another)触发attributeRepalced事件。
注意:只要有对象保存到session中或从session中移除或改变属性的值都会触发相应事件,不论该对象是否实现了AttributeListener。
总结:
1.只有实现了HttpSessionBindingListener的类,在和session绑定、解除绑定时触发其事件。
2.实现了HttpSessionAttributeListener后,任何对象(不论其是否实现了AttributeListener)在变化时均触发对应的事件。
分享到:
相关推荐
在Java Web开发中,`HttpSessionBindingListener`接口是一个非常重要的工具,用于监听session中的对象绑定和解绑事件。这个接口提供了对用户会话状态变化的观察能力,从而可以实现一些高级功能,如在线人员查看、...
用于监听HttpSession中属性的添加、删除和替换事件,监听器类需实现javax.servlet.http.HttpSessionAttributeListener接口。 HttpSessionAttributeListener接口的方法: voidattributeAdded...
- **第三类**:HttpSessionBindingListener和HttpSessionActivationListener,用于监听HttpSession中的JavaBean状态变化,如钝化、活化、绑定和解除绑定。 【监听器使用示例】 - **ServletContextListener**:在...
1. **HttpSessionAttributeListener**:监听HttpSession对象属性的添加、删除和替换操作。 2. **HttpSessionBindingListener**:监听任何绑定到或从HttpSession中解绑的对象。 3. **HttpSessionActivationListener**...
此外,`HttpSessionBindingListener`和`HttpSessionAttributeListener`等接口的增强,使得监听器的使用更为灵活。 **2. JavaServer Pages (JSP) 2.1** JSP 2.1 提供了动态网页生成的能力,通过内置的EL(Expression...
5. **HttpSessionBindingListener**和**HttpSessionAttributeListener**:这两个监听器接口用于在HttpSession中添加、移除或者更改属性时触发相应操作,增强了对会话状态的管理。 6. **MultipartResolver**:处理...
在Java Servlet API中,提供了多种监听器接口,例如HttpSessionListener、HttpSessionAttributeListener和HttpSessionBindingListener,用于监听会话的创建、销毁、属性添加、修改和移除等事件。 在这个特定的例子...
Tomcat的session共享机制是通过实现`javax.servlet.http.HttpSessionBindingListener`和`javax.servlet.http.HttpSessionAttributeListener`接口的session管理器来完成的。在本案例中,`tomcat-cluster-redis-...
`HttpSessionBindingListener`接口则关注会话中对象的绑定和解绑事件。 通过实现这些监听器接口,开发者可以实现以下功能: 1. 统计在线用户:通过监听`sessionCreated`和`sessionDestroyed`,可以记录当前活跃的...
- 利用Java的`HttpSessionBindingListener`接口和`HttpSessionAttributeListener`接口监听Session事件,实现Session的同步。 - 优点:与应用服务器的集群支持紧密集成。 - 缺点:需要对Java EE容器的配置和使用有...
HttpSessionAttributeListener HttpSessionBindingEvent HttpSessionBindingListener HttpSessionContext HttpSessionEvent HttpSessionListener HttpUtils RequestDispatcher Servlet ServletConfig ...
- **HttpSessionBindingListener** 和 **HttpSessionActivationListener**:这两个接口关注HttpSession中对象的绑定和激活事件,常用于会话持久化和集群环境下的会话管理。 4. **使用监听器的好处** - **解耦合**...
在Java Web中,我们可以使用HttpSessionListener或者HttpSessionAttributeListener接口来实现这一目标。这里我们将主要关注HttpSessionBindingListener,因为它可以监听到Session中的属性变化。 1. 创建一个实现了...
在Servlet 2.2中,我们可以使用`HttpSessionBindingListener`接口,而在Servlet 2.3中,还可以使用`HttpSessionAttributeListener`。不过,由于某些环境可能不直接支持Servlet 2.3,所以这里我们关注`...
- `HttpSessionAttributeListener`接口:这个接口扩展了对HttpSession中属性的监听,它提供了`attributeAdded`、`attributeRemoved`和`attributeReplaced`方法,分别对应于属性的添加、移除和替换事件。这对于跟踪...
编写`SessionListener`类,实现`HttpSessionBindingListener`和`HttpSessionAttributeListener`接口,以便在Session创建、修改和移除时与`Redis`交互。 最后,确保所有配置正确无误后,重启`Nginx`和`Tomcat`服务器...
javax.servlet.Filter javax.servlet.Servlet javax.servlet.FilterChain ...javax.servlet.FilterConfig ...javax.servlet.http.HttpSessionAttributeListener javax.servlet.http.HttpSessionActivationListener
- 监听session的创建、销毁、属性增减变化和绑定事件:通过实现HttpSessionListener、HttpSessionActivationListener、HttpSessionAttributeListener和HttpSessionBindingListener接口,可以监听和响应会话相关的...
- **interface: HttpSessionAttributeListener** ### 6. Custom Tags Custom Tags允许开发者创建可重用的HTML和XML代码片段,以增强JSP页面的灵活性和功能。 - **interface: JspTag** - **interface: SimpleTag**...