httpsessionbindingevent和httpsessionbindinglistener的区别

 我来答
huanglenzhi
2016-04-27 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117529 获赞数:517219
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  HttpSessionBindingListener和HttpSessionAttributeListener是两个经常让初学者弄混的监听器,其实它们有很大的区别。这2个监听器在文章中简称为BindingListener和AttributeListener.
  1.BindingListener有2个方法,valueBound(HttpSessinBindingEvent)和valueUnbount(HttpSessionBindingEvent)。实现BindingListener接口的对象被绑 定到session时触发valueBound事件,解除绑定时触发valueUnbound事件。举例来说:

  [c-sharp] view plain copy
  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中添加、移除或更改属性值时会触发相应的事件。
  例子:

  [java] view plain copy
  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)在变化时均触发对应的事件。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式