监听器Listerner

1.什么是监听器?  监听器就是一个java来监听其他java的状态 主要应用在GUI Android 方面

事件源: 轮胎

监听器:胎压报警器

事件源与监听器绑定:安装了胎压报警器的轮胎

事件:一根绣花针

GUI方面的小应用:

package com.com.xuzz.jframe;

import javax.swing.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class MyFrame extends JFrame {
    public static void main(String[] args) {
        //1事件源 创建
        MyFrame  myFrame= new MyFrame();
        myFrame.setName("来嘛小哥");
        myFrame.setVisible(true);
        myFrame.setBounds(0, 0, 200, 200);
        //2.创建监听器

        //3 事件源与监听器绑定
        myFrame.addWindowListener(new MyWindowListener());


    }


}
class MyWindowListener implements WindowListener{

    @Override
    public void windowOpened(WindowEvent e) {
        System.out.println("我被打开了");

    }

    @Override
    public void windowClosing(WindowEvent e) {
        System.out.println("我关闭");
        MyFrame frame = (MyFrame) e.getSource();
        System.out.println(frame.getName());
        System.exit(0);
    }

    @Override
    public void windowClosed(WindowEvent e) {
        System.out.println("我被关闭了");
    }

    @Override
    public void windowIconified(WindowEvent e) {

    }

    @Override
    public void windowDeiconified(WindowEvent e) {

    }

    @Override
    public void windowActivated(WindowEvent e) {
        System.out.println("我被激活了");
    }

    @Override
    public void windowDeactivated(WindowEvent e) {

    }
}

二.web应用中的监听器

web中的listener和filter是属于servlet规范中的高级技术

web中的listener 分 三类八种。 主要针对3个域对象  servletcontext ,httpsession , servletrequest

三类八种:

一类:监听域对象的创建和销毁  servletcontectlistener HttpSessionListener , ServletRequestListener 

二类:监听域对象中属性的变化 ServletContextAttributeListener , HttpSessionAttributeListener , ServletRequestAttributeListener

三类:监听httpsession 中的 javabean 的状态改变(绑定 钝化 活化 解除绑定)

HttpSessionBindingListener

HttpSessionActivationListener

ServletContextListener 代码实践:

package com.xuzz.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.Timer;
import java.util.TimerTask;

public class MyListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        Timer tm = new Timer();
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                System.out.println("我是大帅哥");
            }
        };
        tm.schedule(timerTask, 10000l, 20000l);


    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

web.xml中:
 <listener>
        <listener-class>com.xuzz.listener.MyListener</listener-class>
    </listener>

二类:

package com.xuzz.listener;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener {
    @Override
    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("add something");
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("remove something");

    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("replace something");

    }
}

 

 三类:

package com.POJO;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;
import java.io.Serializable;


/*
* 1.  session.setAttribute("Student", new Student()); 放值 也就是绑定
*
* 解除
* session.        session.removeAttribute("Student");
*
* 1.钝化
* 正常关闭服务器
* 设置 session 的钝化时间  conf 中的 context 配置
 *
 * 活化

 * */
public class Student implements HttpSessionActivationListener, HttpSessionBindingListener, Serializable {
    private String name;
    private int age;
    private int telphone;

    public Student(String name, int age, int telphone) {
        this.name = name;
        this.age = age;
        this.telphone = telphone;
    }

    public Student() {

    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", telphone=" + telphone +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getTelphone() {
        return telphone;
    }

    public void setTelphone(int telphone) {
        this.telphone = telphone;
    }

    @Override
    public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {

    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {

    }

    @Override
    public void sessionWillPassivate(HttpSessionEvent httpSessionEvent) {
        //序列化 到硬盘

    }

    @Override
    public void sessionDidActivate(HttpSessionEvent httpSessionEvent) {
        //反序列化
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值