22-监听器

一、 事件监听

1. 在程序中经常会用到事件监听机制

2. 关键字:

事件: 用户的一个操作, 可以是点击一个按钮、调用一个方法、创建一个对象

事件源: 发生事件的对象

事件监听器:  负责监听发生在事件源上的事件

事件处理器:  监听器的成员方法,当事件发生的时候会触发对应的处理器(成员方法)

3. 事件处理机制

    1) 将监听器绑定到事件源

    2) 事件发生触发监听器的成员方法,即事件处理器,传递事件对象

    3) 事件处理器通过事件获得事件源,进行处理

4. 做事件监听一般都需要做两件事情

    1) 写一个类实现监听器接口

    2) 将监听器注册到事件源上

 

二、 servlet事件监听器

1. 在Servlet 技术中主要有三类事件监听器:

 

1) 监听三个域对象的创建和销毁

    ServletContextListener、HttpSessionListener、HttpServletRequestListener

    三个监听器都是接口类型

 

    public interface ServletContextListener

    {

       // 事件处理器

       init

   

 

       destroy

    }

    web应用启动时, web 容器会将所有的监听器都实例化,并绑定到对应的事件源上

   

2) 监听三个域对象中属性的变化(增加、删除和替换)

    setAttribute   getAttribute  removeAttribute

    ServletContextAttributeListener,

    HttpSessionAttributeListener

    ServletRequestAttributeListener

 

    处理器

attributeAdded

attributeReplaced

attributeRemoved

 

3) 感知对象被绑定到session域

    HttpSessionBindingListener

    该接口由javabean对象来实现

    该监听器不需要注册

 

案例: 统计来访者的ip  ServletRequestListener

       统计在线人数  HttpSessionListener

        统计在线用户  HttpSessionBindingListener

        session定时扫描器  HttpSessionListener

 

Apache SSHD 客户端监听器(ClientSessionListener)是一个接口,它可以用来监听客户端会话(session)的状态和事件。当客户端与服务器建立连接并创建会话时,可以注册一个或多个监听器来监听该会话的状态变化,从而在会话状态发生变化时执行相应的操作。 下面是一些常见的客户端会话状态变化事件: - sessionCreated: 当客户端会话被创建时触发该事件。 - sessionClosed: 当客户端会话被关闭时触发该事件。 - authSucceeded: 当客户端成功进行身份验证时触发该事件。 - authFailed: 当客户端身份验证失败时触发该事件。 - channelCreated: 当客户端创建一个新的通道(channel)时触发该事件。 - channelClosed: 当客户端关闭一个通道时触发该事件。 通过实现 ClientSessionListener 接口,可以监听这些事件并执行相应的操作。例如,当客户端会话被创建时,可以在控制台上输出一条消息,如下所示: ```java public class MyClientSessionListener implements ClientSessionListener { @Override public void sessionCreated(ClientSession session) { System.out.println("Client session created: " + session); } // 省略其他方法 } ``` 然后在客户端连接服务器时,将该监听器注册到会话中: ```java public class MySshClient { public static void main(String[] args) throws Exception { SshClient client = SshClient.setUpDefaultClient(); client.start(); try (ClientSession session = client.connect("localhost", 22).verify().getSession()) { session.addSessionListener(new MyClientSessionListener()); session.authPassword("username", "password"); // 执行其他操作 } client.stop(); } } ``` 在上面的示例中,当客户端会话被创建时,会在控制台上输出一条消息。你可以根据实际需求扩展 MyClientSessionListener 类,以便在会话状态发生变化时执行其他操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值