【Head First Servlets and JSP】笔记8:监听者_字段

 

1、你不用了解所有监听者API,并不多,一共有8个。不过,你需要知道你能监听什么,以便在需要的时候可以查。

【Head First Servlets and JSP】笔记8:监听者_ide_02

【Head First Servlets and JSP】笔记8:监听者_字段_03

 

 

2、关于Session和Cookie。参见JavaWeb学习总结(十二)——Session by 孤傲苍狼

 

3、HttpSessionBindingListener

这是一个非常有用的监听者,为什么说它有用呢?因为它可以协助我们同步实际对象和数据库的信息。例如:

package com.example;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class Dog implements HttpSessionBindingListener {
    private String breed;

    public Dog(String breed) {
        this.breed = breed;
    }

    public String getBreed() {
        return breed;
    }

    @Override
    public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
        // 如果我被增加到某个session就执行这段代码
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
        // 如果我从某个session移除,就执行这段代码
    }
}

我们的实际数据通常是存储在数据库中的,因此,我们一般需要使用数据库信息来填充Dog对象的字段,但是问题是,我们怎么保持数据库记录和Dog对象的信息同步?另外,什么时候让它们同步?

很显然,我们“要用对象”和“不用对象”的时刻(在这之间,对象可能发生改变)就是我们同步的时刻,我们如何知道对象什么时候被用or不用?这就需要一个监听者——HttpSessionBindingListener。