JavaWeb中Liener监听器

本文介绍了JavaWeb中的Liener监听器,包括其在监控用户在线人数、初始化信息加载、网站访问量统计和访问信息监控等方面的功能。还探讨了HttpSessionAttributeListener和HttpSessionBindingListener的作用,并给出了部分代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lienerj监控器的主要功能:

  • Linter监听器的功能:
  • 可以统计在线人数。
  • 加载初始化的信息。
  • 统计网站的访问量。
  • 监控访问信息。

Linter监听器的框架图:

ServletRequestListenera监听器示例:
/**
 * 监控总共的访问量
 *     
 * **/
public class ServletListenerImpl2  implements ServletRequestListener {
    private   int  math=0;
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {

    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        math++;
        sre.getServletContext().setAttribute("math",math);
    }
}
HttpSessionListener监控器
/**
 * 用于监控在线人数
 *
 * **/
public class ServletListenerImpl1  implements HttpSessionListener {
    private   int userNumber=0;
    @Override
    public void sessionCreated(HttpSessionEvent se) {
            userNumber++;
            se.getSession().setAttribute("userNumber",userNumber);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        userNumber--;
        se.getSession().setAttribute("userNumber",userNumber);
    }
}
ServletContextListener监听器:
public class ServletListenerImpl  implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("context对象被创建了");
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("context对象被销毁了");
    }
}
ServletContextAttributeListener监听器:
public class ServletListenerImpl  implements ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        //context域中的添加了属性调用
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae) {
      //context域中删除了属性调用
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae) {
    //context域中修改了属性继续调用
    }
}
ServletRequestAttributeListener监听器:

public class ServletListenerImpl  implements ServletRequestAttributeListener {
    @Override
    public void attributeAdded(ServletRequestAttributeEvent srae) {

        //request域中的添加了属性调用
    }

    @Override
    public void attributeRemoved(ServletRequestAttributeEvent srae) {
        //request域中删除了属性调用

    }



    @Override
    public void attributeReplaced(ServletRequestAttributeEvent srae) {

        //request域中修改了属性继续调用
    }


}

HttpSessionAttributeLister监听器:

public class ServletListenerImpl  implements HttpSessionAttributeListener {
    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        //监控域属性的添加
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent se) {
        //监控域属性的删除
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent se) {
        //监控域属性的修改
    }
}

sessionWillPassivate监听器:

//这里注意要实现Serializable接口,因为钝化和活化都是序列化操作
public class HttpSessionActivation implements HttpSessionActivationListener,Serializable {
    //监听器中有两个属性,用来演示效果
    private AtomicInteger id;
    private String name;
​
    public AtomicInteger getId() {
        return id;
    }
​
    public void setId(AtomicInteger id) {
        this.id = id;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
​
    //当有Session被钝化之前就会执行此方法
    @Override
    public void sessionWillPassivate(HttpSessionEvent se) {
        System.out.println("Session 被钝化了");
    }
​
    //session被活化之后此方法也会被Servlet容器执行
    @Override
    public void sessionDidActivate(HttpSessionEvent se) {
        System.out.println("Session 被活化了");
​
    }

HttpSessionBindingListener监听器:

public class User implements HttpSessionBindingListener,Serializable{undefined

private String username;

private String password;

public String getUsername() {undefined

return username;

}

public void setUsername(String username) {undefined

this.username = username;

}

public String getPassword() {undefined

return password;

}

public void setPassword(String password) {undefined

this.password = password;

}

public void valueBound(HttpSessionBindingEvent hsbe) {undefined

System.out.println("valueBound name: "+hsbe.getName());

}

public void valueUnbound(HttpSessionBindingEvent hsbe) {undefined

System.out.println("valueUnbound name: "+hsbe.getName());

}

}

部分代码出自:https://blog.youkuaiyun.com/weixin_42113552/article/details/114165752

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值