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

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。

时间: 2024-08-22 03:51:52

【Head First Servlets and JSP】笔记8:监听者的相关文章

【Head First Servlets and JSP】笔记7:如何创建一个全局的dog?

重定向与请求分派 “局部”参数——ServletConfig——servlet初始化参数 “全局”参数——ServletContext——上下文初始化参数 Web app的“构造器”——ServletContextListener 实战:如何创建一个全局的dog? 1.重定向与请求分派. resp.sendRedirect("http://www.cnblogs.com/xkxf/"); RequestDispatcher view = req.getRequestDispatcher

【Head First Servlets and JSP】笔记23:Expression Language(EL) 完全攻略

基本上是<Head First Servlets and JSP>内容的整理.扩充.顺便推荐一个供参考的JSP教程:JSP Tutorial内容很全面,还有一些有趣的实例. 完整代码参考 EL隐式对象汇总 pageContext使用参考 EL表达式的基本规则 关于EL的一些细节 通过EL获得request参数 从request得到更多信息 获得Request Method? xxxxScope有意义吗? 通过EL调用函数 EL与数学运算 1.EL隐式对象汇总.如下所示: 更详细的内容可以参考 

【Head First Servlets and JSP】实践记录01:从有脚本到无脚本

试图章节式的阅读<Head First Servlets and JSP>总感觉不对劲,这本书前后的联系性很强,有点类似于“连续剧”,而不是通常的“知识清单”. 可以建立多态的bean引用吗 使用type,但没有class scope属性默认为“page” 从有脚本到无脚本 1.快速搭建一个测试环境:输入用户名,返回“Hello, 用户名” index.html <!DOCTYPE html> <html lang="en"> <head>

Web应用中监听者的通知顺序按照DD中的定义顺序

Web应用中监听者的通知顺序按照DD中的定义顺序: XML: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http:/

EntityFramework之监听者判断SQL性能指标

前言 当我们利用EF这个ORM框架时,我们可能会利用LINQ或者原生的SQL语句来进行数据操作,此时我们无法确定我们的代码是否会给数据库带来一定的负载,当给数据库带来一定的压力时,由于项目中对数据进行相应的操作实在是太多,我们无法准确的去进行定位,又或者我们不是专业的DBA,无法准确的去分析SQL性能的优劣,此时该怎么办呢?我们完全不需要DBA,我们可以通过相应的操作来判断一段SQL代码的好坏,这就是我们本节需要讲的内容,利用EF中监听者来判断SQL性能,在之前系列中也有提到,可以参考之前系列.

KVO监听者

监听者模式方便的监听所需要的值得变化 @implementation ViewController - (IBAction)Buton:(id)sender { self.view.backgroundColor=[UIColor redColor]; } - (void)viewDidLoad { [super viewDidLoad]; self.model=[[Model alloc]init]; //第一个参数是 被监听者 //第二个参数是  监听者 //第三个参数是  监听内容 //第

监听者

在web系统中,HttpServletRequest.HttpSession.ServletContext对象在web容器中遵循生成.运行.销毁这样的生命周期.当进行相关的监听配置后,web容器就会调用监听器上的方法,进行对应的事件处理. 1.监听接口和事件类 2.如何告诉容器有一个监听者 有两种方法可以进行监听者的配置,一种是在DD中配置,如果需要上下文初始化参数,也要在DD中配置: 在servlet 3.0中,可以利用注入的方式注入监听类(虽然监听器和过滤器不是servlet,但是它们都在同

监听者模式

监听者模式是观察者模式实现的一种,也属于Publish/Subscribe模式,被监听者触发某一事件后向监听者发送通知.在java中最常用的就是在编写GUI程序时,控件的事件监听了. 通常在编写java的GUI程序时,需要在控件上注册一个监听器,这个监听器需要开发人员自己编写,当控件被监听的事件触发后,监听器也会做出响应的反应. Frame frame = new Frame("java"); frame.setBounds(400, 300, 300, 200); frame.set

设计模式(二)观察者监听者模式

基于MAP线程安全的观察者监听者模式 1 #include<map> 2 #include<string> 3 #include<vector> 4 #include<iostream> 5 #include<memory> 6 using namespace std; 7 8 class Listener 9 { 10 public: 11 Listener(string name):_name(name){} 12 virtual void