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一起活化时
调用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容