JavaWeb学习笔记——监听器详解

知识概要:

1.监听器下例子举例

2.Servlet规范中的监听器

3.

4.

1. 监听器下例子举例说明:

/*

Frame:事件源。发生事件的对象

WindowListener:监听器。(对应着事件源的某些内容)

WindowEvent:事件对象。封装事件源

*/

public class FrameDemo {

public static void main(String[] args) {

Frame f = new Frame("我的小窗");

f.setSize(400, 300);

f.addWindowListener(new WindowAdapter() {//注册具体的监听器

public void windowClosing(WindowEvent e) {

Frame f1 = (Frame) e.getSource();

f1.dispose();

}

});

f.setVisible(true);

}

}

例子二:

Student

package com.itheima.base;

public class Student {

private String name;

private StudentListener listener;

public Student(String name){

this.name = name;

}

public void eat(){

if(listener!=null){

listener.preEat(new StudentEvent(this));

}

System.out.println(name+":开吃");

}

public void study(){

if(listener!=null){

listener.preStudy(new StudentEvent(this));

}

System.out.println(name+":开始学习");

}

public String getName() {

return name;

}

public void addStudentListener(StudentListener listener){

this.listener =  listener;

}

}

StudentListener

StudentEvent

package com.itheima.base;

public interface StudentListener {

void preEat(StudentEvent e);

void preStudy(StudentEvent e);

}

package com.itheima.base;

public class StudentEvent {

private Object source;

public StudentEvent(Object source){

this.source = source;

}

public Object getSource(){

return source;

}

}

studentDemo

public class StudentDemo {

public static void main(String[] args) {

Student s = new Student("张三");

s.addStudentListener(new StudentListener() {

public void preStudy(StudentEvent e) {

Student s1 = (Student)e.getSource();

System.out.println(s1.getName()+",我给你一个香吻,你努力学习");

}

public void preEat(StudentEvent e) {

Student s1 = (Student)e.getSource();

System.out.println(s1.getName()+",我给你一个湿吻,润一下喉咙,好好吃饭");

}

});

s.study();

s.eat();

}

打印结果:

张三,我给你一个香吻,你努力学习

张三:开始学习

张三,我给你一个湿吻,润一下喉咙,好好吃饭

张三:开吃

2.Servlet规范中的监听器

a、监听ServletContext、HttpSession、ServletRequest对象的创建和销毁的监听器。

ServletContextListener:两个方法

HttpSessionListener:两个方法

ServletRequestListener:两个方法

1.ServletContextListene监听器:

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

/*

在web.xml中进行监听器注册

<listener>

<listener-class>com.itheima.listener.MyServletContextListener</listener-class>

</listener>

*/

public class MyServletContextListener implements ServletContextListener {

//ServletContext对象创建时就会指定该方法

//ServletContext对象创建时就执行,执行一次:特点

//应用场景:完成系统的初始化。

//Spring框架:就是利用监听器完成Spring容器的初始化的

public void contextInitialized(ServletContextEvent sce) {

System.out.println("ServletContext实例化了");

}

//ServletContext对象销毁时就会指定该方法

public void contextDestroyed(ServletContextEvent sce) {

System.out.println("ServletContext销毁了");

}

}

2.HttpSessionListener:主要可以用来检测网站的访问次数

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class MyHttpSessionListener implements HttpSessionListener {

//监听访问量

public void sessionCreated(HttpSessionEvent se) {

System.out.println(se.getSession()+"创建了");

}

public void sessionDestroyed(HttpSessionEvent se) {

System.out.println(se.getSession()+"销毁了");

}

}

3.ServletRequestListener:两个方法

import javax.servlet.ServletRequestEvent;

import javax.servlet.ServletRequestListener;

public class MyServletRequestListener implements ServletRequestListener {

//统计某个资源的访问次数

public void requestDestroyed(ServletRequestEvent sre) {

}

public void requestInitialized(ServletRequestEvent sre) {

}

}

b、三个类型对象域属性中增、删、改的监听器(3个)

ServletContextAttributeListener,

HttpSessionAttributeListener,

ServletRequestAttributeListener

c、感知型监听器(2个):监听自己何时被帮到session上,何时解绑了;何时被钝化了,何时被活化了(序列化到某个存储设置中)。

注意:这种监听器不需要注册。某个javabean实现这些接口后就可以监听何时被绑定、解绑或被激活或钝化。

HttpSessionBindingListener:实现该接口的类,能检测自己何时被Httpsession绑定,和解绑

HttpSessionActivationListener:实现该接口的类(要求些javabean必须是实现了Serializable接口的),能监测自己何时随着HttpSession一起激活和钝化。

ServletListener对象学习笔记的更多相关文章

  1. javaScript 对象学习笔记

    javaScript 对象学习笔记 关于对象,这对我们软件工程到学生来说是不陌生的. 因为这个内容是在过年学到,事儿多,断断续续,总感觉有一丝不顺畅,但总结还是要写一下的 JavaScript 对象 ...

  2. ASP.NET本质论第二章应用程序对象学习笔记1

    1.请求的处理参数—上下文对象HttpContext 1) 针对每一次请求,ASP.NET将创建一个处理这次请求所使用的HttpContext对象实例,这个对象实例将用来在ASP.NET服务器的处理过 ...

  3. JavaScript 对象 之继承对象 学习笔记

    假设,我们有个这样的需求: 两个种族,每个种族都有 名字.血量(默认200).行为(行为有 跳跃.移动速度 这些属性)等共有属性. 人族能量值比兽人多10%,兽人血量比人族多10%. 职业有战士和法师 ...

  4. JavaScript中Date(日期对象),Math对象--学习笔记

    Date对象 1.什么是Date对象? 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 语法:var Udate=new Date();  注:初始值为当前时间(当前电脑系统 ...

  5. javaScript对象学习笔记(一)

    一.什么是对象 对象: JavaScript的一种基本数据类型 对象是属性的无序集合,每个属性都是一个名/值对 JavaScript中的事物都是对象:字符串.数值.数组.函数... JavaScrip ...

  6. java——对象学习笔记

    1.面向对象(OOP)的三大特性 对象的行为(behavior):可以对对象施加哪些操作,或者可以对对象施加哪些方法. 对象的状态(state):当施加那些方法后,对象如何响应. 对象标识(ident ...

  7. python_类与对象学习笔记

    class Phone: #手机属性===>类属性 # color='black' # price=4500 # brand='oppo' # size='5.5' #参数化-魔法方法--初始化 ...

  8. OpenGL学习笔记3——缓冲区对象

    在GL中特别提出了缓冲区对象这一概念,是针对提高绘图效率的一个手段.由于GL的架构是基于客户——服务器模型建立的,因此默认所有的绘图数据均是存储在本地客户端,通过GL内核渲染处理以后再将数据发往GPU ...

  9. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

随机推荐

  1. mpls vpn剩余笔记

    将IP地址映射为简单的具有固定长度的标签 用于快速数据包交换 20 3 1 8 在整个转发过程中,交换节点仅根据标记进行转发 标签交换路径(LSP) 多协议标签交换MPLS最初是为了提高转发速度而提出 ...

  2. 个人作业1——四则运算题目生成程序(基于java)

    项目代码: https://git.coding.net/YJh_/11.git 题目要求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:/ + / = / 运算符为 +, −, ×, ...

  3. Java学习10——package和import

    package和import语句 为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间,使用时,import引入相应package ...

  4. 201521123015 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过? ...

  5. 201521123071《Java程序设计》第1周学习总结

    1. 本章学习总结 通过本周的学习,对java的一些语法以及java的发展史有了一定的基础认识,也了解了JDK的安装,以及环境变量定义和配置等知识.还有对码云,Markdown等的使用,大大方便了我们 ...

  6. 201521123063 《Java程序设计》 第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 finally 题目4-2 1.1 截图你的提交结果(出现学 ...

  7. 201521123111《Java程序设计》第10周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容 线程不是程序 线程必须在程序对应的进程中运行 一个进程中可以同时执行多个线程,这些线程可以完成不同的功能. 2. 书面 ...

  8. Linux下安全证书申请以及配置到Nginx

    wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.shchmod +x l ...

  9. [UIKit学习]00.关于前置知识(storyboard,UIViewController,类扩展,项目属性)

    storyboard文件的认识 用来描述软件界面 默认情况下,程序一启动就会加载Main.storyboard 加载storyboard时,会首先创建和显示箭头所指的控制器界面 IBAction和IB ...

  10. Maven(五)之Maven配置阿里云镜像飞快下jar包

    用过Maven的人都知道Maven对于依赖的管理让我们程序员从此远离了自己去在项目中把需要的jar包导入到项目中,但是因为中央仓库是在国外的,所以在我们从中央仓库下载依赖的时候, 我们发现下载速度真的 ...