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