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. UIImageView动画制作

    1.先初始化一个UIImageView的视图窗口 如:anima UIImageView *anima = [UIImageView alloc]initWithFrame(0,0,100,100); ...

  2. ubuntu16.04下源码安装onos1.0.2

    由于工作需要,下载安装onos1.0.2的版本,大家看需求可以下载安装更高级的版本 参考链接:http://www.sdnlab.com/14650.html 1.系统环境 Ubuntu16.04 L ...

  3. 第1阶段——uboot分析之通过nand命令读内核(8)

    本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0" 怎么实现nand命令读 ...

  4. asp.net MVC下使用rest

    前言 最近做了下个MVC的项目,需要用到rest接口,与java写的应用程序通信,包括数据的接收和发送,那么我将用实用的角度来全面的讲解一下它的使用方法 一.创建rest服务 首先创建一个Asp.Ne ...

  5. ABB-robotstudio离线编程-Smart组件资料-笔记

    Smart组件 目录: 1.“信号与属性”子组件. 2.“参数与建模”子组件. 3.“传感器”子组件. 4.“动作”子组件. 5.“本体”子组件. 6.“其他”子组件. 一.“信号与属牲”子组件 1. ...

  6. JQuery实用技巧--学会你也是大神(1)——插件的制作技巧

      前  言 JRedu 学习之前,首先我们需要知道什么是JQuery? JQuery是一个优秀的javascript框架. JQuery是继Prototype之后又一个优秀的Javascript框架 ...

  7. CCIE-MPLS VPN-实验手册(中卷)

    5:MPLS VPN PE CE OSPF 实验1 5.1 实验拓扑 5.2 实验需求 a. R1 R2 R3 组成P-NETWORK,底层协议采用EIGRP b. R1 R2 R3 直连链路启用LD ...

  8. 团队作业7---Alpha冲刺值事后诸葛

    一.设想和目标 1.我们的软件要解决什么问题? 解决教师和助教对实验报告查重的问题,拥有两个用户:1.教师或助教:查看学生实验报告的重复率:4.学生:上传实验报告. 2.是否定义得很清楚?是否对典型用 ...

  9. 201521123091 《Java程序设计》第13周学习总结

    Java 第十三周总结 第十三周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 4.课后阅读 1.本章学习总结 1.1 以你喜欢的方式(思维导图 ...

  10. 201521123065《java程序设计》第七周学习总结

    1. 本周学习总结 1.Iterator迭代器用于遍历集合中的元素: 2.使用迭代器删除元素一定要先指向下一个元素在删除第一个元素: 3.List可以有重复对象: Set不能有重复对象: 4.Map是 ...