学科分类
目录
Java Web

HttpSessionBindingListener接口

在使用JavaBean对象时经常会判断该对象是否绑定到Session域中,为此,Servlet API中专门提供了HttpSessionBindingListener接口,该接口用于监听JavaBean对象绑定到HttpSession对象和从HttpSession对象解绑的事件。HttpSessionBindingListener接口中共定义了两个事件处理方法,分别是valueBound()方法和valueUnbound()方法,接下来针对这两个方法进行讲解。

1、valueBound()方法

valueBound()方法的完整语法定义如下:

public void valueBound(HttpSessionBindingEvent event) 

当对象被绑定到HttpSession对象中,Web容器将调用对象的valueBound()方法并传递一个HttpSessionBindingEvent类型的事件对象,程序可以通过这个事件对象来获得将要绑定到的HttpSession对象。

2、valueUnbound()方法

valueUnbound()方法的完整语法定义如下:

public void valueUnbound(HttpSessionBindingEvent event)

当对象从HttpSession对象中解除绑定时,Web容器同样将调用对象的valueUnbound()方法并传递一个HttpSessionBindingEvent类型的事件对象。

为了熟悉上述方法,接下来通过一个案例来演示如何监听绑定到Session域中的对象,如例1所示。

例1 MyBean.java

 1  package cn.itcast.chapter05.listener;

 2  import javax.servlet.http.*;

 3  public class MyBean implements HttpSessionBindingListener {

 4    // 该方法被调用时,打印出对象将要被绑定的信息

 5    public void valueBound(HttpSessionBindingEvent hbe) {

 6      System.out.println("MyBean对象被添加到了Session域..."+

 7          this);

 8    }

 9    // 该方法被调用时,打印出对象将要被解绑的信息

 10   public void valueUnbound(HttpSessionBindingEvent hbe) {

 11     System.out.println("MyBean对象从Session中移除了..."+this);

 12   }

 13 }

在chapter05工程的WebContent根目录中,编写一个testbinding.jsp页面,在这个页面中将MyBean对象保存到Session对象中,然后从Session对象中删除这个MyBean对象,以查看MyBean对象感知自己的Session绑定事件,如例2所示。

例2 testbinding.jsp

 1  <%@ page language="java" contentType="text/html; 

 2  charset=utf-8" pageEncoding="utf-8"

 3  import="cn.itcast.chapter05.listener.MyBean"%>

 4  <html>

 5  <head>

 6  <title>Insert title here</title>

 7  </head>

 8  <body>

 9    <%

 10     session.setAttribute("myBean", new MyBean());

 11   %>

 12 </body>

 13 </html>

启动Web服务器打开IE浏览器在地址栏中输入http://localhost:8080/chapter05/testbinding.jsp,访问testbinding.jsp页面,此时,控制台窗口中显示的结果如图1所示。

图1 控制台窗口

从图1可以看出,当第一次访问testbinding.jsp页面时,MyBean对象会被添加到Session域中,刷新浏览器,此时会显示另一个对象添加到了Session域中,第一个被添加的对象会从Session域中被移除,也就是说第二个添加的对象覆盖了第一个添加的对象。

点击此处
隐藏目录