Listener-监听器

1.监听器概述

1.1什么是监听器?

监听器一般是一个实现特定接口的Java程序,这个程序需要监听另外一个Java对象的属性状态变化(对象的创建,销毁,对象上属性的变化等),当监听的对象发生了上述变化,就会通知监听器,监听器将会调用特定的方法进行处理。

1.2监听器

1事件源:按钮,车
2事件:按钮被点击,车被偷
3监听器:listener、警察

1.3监听器的特点

(1)通常是一个接口,其中的内容由开发人员来实现
(2)通常需要将监听器注册到事件源上
(3)监听器中的方法会在特定的事件触发时执行

例子:按钮被点击

package listener;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ListenerDemo {

    //创建一个窗口,在窗口中添加一个按钮,按钮点击时,在JLabel输出helloword
    public static void main(String[] args) {
        //1.创建一个窗口(JFrame)
        JFrame frame=new JFrame("监听器例子");
        frame.setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //2.设置窗口的位置和大小
        frame.setLocation(500, 250);
        frame.setSize(300, 250);
        //3.创建一个JLable和按钮
        final JLabel label=new JLabel("未点击");
        JButton btn=new JButton("点我!");
        //5.将按钮添加到窗口中
        frame.add(label);
        frame.add(btn);
        //6.创建一个监听器
        
        ActionListener listener = new ActionListener() {
            //事件处理器
            public void actionPerformed(ActionEvent e) {
                label.setText("HelloWord");
                System.out.println("HelloWord");
            }
        };
        /**
         * 事件源:按钮
         * 事件:按钮被点击
         * 监听器:Listener
         * 将监听器注册到按钮(事件源)上,监听器将会一直监听(监视)按钮的状态变化,一旦按钮被
         * 点击(事件发生),将会通知监听器,监听器将会调用特定的方法处理"按钮被点击"
         * 事件
         */
        //7.注册监听器(让监听器监听指定的按钮)
        btn.addActionListener(listener);
        //8.设置窗口为显示(状态)
        frame.setVisible(true);
        
    }

}

2.2 开发监听器

2.2.1开发监听器的步骤

(1)写一个类(比如:MyServletContextListener),实现对应的监听器接口(如:ServletcontextListener)

package listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
 *监听器类:实现ServletContext域对象的生死监听器
 *用于监听(监视)ServletCotext对象的创建和销毁
 */
public class MyServletContextListener implements ServletContextListener{

    /**
     * 当ServletContext对象创建时,监听器调用该方法
     */
    public void contextInitialized(ServletContextEvent sce) {
        
        System.out.println("我来了。。。"+sce.toString());
    }

    /**
     * 当ServletContext对象销毁时,监听器调用该方法
     */
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("我走了。。。"+sce.toString());
    }

}

(2)在web应用的web.xml文件配置监听器完成注册

<!--配置监听器(完成注册)  -->
 <listener>
    <listener-class>listener.MyServletContextListener</listener-class>
 </listener>

2.2.2JavaWeb中的监听器(一共有8个)

1.ServletContextListener
ServletContext对象的生命周期监听器,其中提供两个方法,一个是在ServletContext对象创建时调用,另一个是在ServletContext对象销毁时调用!
void contextInitialized(ServletContextEvent sce) 
在创建ServletContext对象时调用
void contextDestroyed(ServletContextEvent sce) 
在销毁ServletContext对象时地调用
2.HttpSessionListener
void sessionCreated(HttpSessionEvent se)
创建 Session 对象时调用
void sessionDestroyed(HttpSessionEvent se)
销毁 Session对象时调用

3.ServletRequestListener
void requestInitialized(ServletRequestEvent sre)
创建request时调用
void requestDestroyed(ServletRequestEvent sre)
销毁request时调用
4.ServletContextAttributeListener
void attributeAdded(ServletContextAttributeEvent
scae) ;添加属性时调用
void attributeReplaced( ServletContextAttributeEv
ent scae); 替换属性时调用
void attributeRemoved(ServletContextAttributeEv
ent scae) ;删除属性时调用
5.HttpSessionAttributeListener
void attributeAdded(HttpSessionBindingEvent se) ;
添加属性时调用
void attributeReplaced(HttpSessionBindingEvent
se); 替换属性时调用
void attributeRemoved(HttpSessionBindingEvent
se) ;删除属性时调用
6.ServletRequestAttributeListener
void attributeAdded(ServletRequestAttributeEvent
srae)
添加属性时调用
void attributeReplaced(ServletRequestAttributeEv
ent srae)
替换属性时调用
void attributeRemoved(ServletRequestAttributeEv
ent srae)
删除属性时调用
7.HttpSessionBindingListener
valueBound(HttpSessionBindEvent e);
当前JavaBean感知到自己被添加到Session时调
用。
valueUnbound(HttpSessionBindEvent e);
当前JavaBean感知到自己被移出Session时调用
8.HttpSessionActivationListener
sessionWillPassivate(HttpSessionEvent e);
当前JavaBean感知自己随着Session一起钝化时
调用
sessionDidActive(HttpSessionEvent e);
当前JavaBean感知自己随着Session一起活化时
调用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • 一、监听器(Listener): 1.什么是监听器? 监听器就是监听某个对象的的状态变化的组件 监听器的相关概念:...
    背对背拥抱阅读 334评论 0 0
  • 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...
    凯哥学堂阅读 318评论 0 0
  • 在我们的web容器中,一直不断的触发着各种事件,例如:web应用启动和关闭,request请求到达和结束等。但是这...
    Single_YAM阅读 623评论 0 9
  • 1、监听器的启动优先级顺序:监听器 > 过滤器 > servlet 2、根据监听域划分监听器: (1)监听Serv...
    WebGiser阅读 1,066评论 0 0
  • 我不想长大,因为我的麻麻就要变老, 我不想长大,因为我的脾气就要收敛, 我不想长大,因为我的快乐就打折扣, 我不想...
    小茗同學阅读 153评论 0 0