服务器监听程序

来源:互联网 发布:阿里云免费体验 编辑:程序博客网 时间:2024/06/05 09:33
    Java Servlet里提供了很多的服务器监听接口,但是却没有明确地说明它们的使用方法.J2EE的API文档里面也没有Useage参考了.我就写一篇文章给不会使用它们的java爱好者们一点参考吧.其实这些也是很简单的.
    大多数的Listener都不是用在javabean或其它类里面的,它们都应该作为服务器的一部分,也就是说,当这些事情发生时,由服务器回调这些监听器里的方法,对于jsp或servlet程序就是透明的了.这样的listener有:ServletContextListener,ServletContextAttributeListener, HttpSessionListener,HttpSessionAttributeListener, ServletRequestListener,ServletRequestAttributeListener .
  • ServletContextListener:监听服务器启动时和关闭
  • ServletContextAttributeListener:监听服务器上下文(全局)属性的变化
  • HttpSessionListener:监听session
  • HttpSessionAttributeListener:监听session的属性表变化
  • ServletRequestListener:监听请求变化
  • ServletRequestAttributeListener:监听request属性变化要使用它们,我们就必须写一个类,实现上面的一个或几个接口,然后在web-inf的web.xml中加入配置:
    <listener>
    <listener-class>包名.类名</listener-class>
    </listener>
    (注意:类放在class文件夹里.)这样,我们的服务器监听就完成了,给大家举个例子:

    统计在线人数


    方法:统计在线人数,我们可以在服务器里设一个全局int变量(4个字节就够了,一点也不占用服务器的内存资源,当然,如果你的网站同时在线人数大于2的32次方,也可以用8个字节!呵呵),然后当我们服务器产生一个session的时候,把那个值加1,删除一个session的时候,把那个值减1就OK了.所以我们用到的就是HttpSessionListener...因为是全局变量,所以用户在任何情况下都可以取得这个值.
    大致程序如下:
    class Online implements HttpSessionListener{
    //.....其它的变量和方法就不写了
    public void sessionCreated(HttpSessionEvent se) {
    ServletContext sc=se.getSession().getServletContext();
    Integer i=(Integer)sc.getAttribute("online");
    if(i==null) i=new Integer(0);
    i++;
    sc.setAttribute("online",i);
    }
    public void sessionDestroyed(HttpSessionEvent se) {
    ServletContext sc=se.getSession().getServletContext();
    Integer i=(Integer)sc.getAttribute("online");
    i--;
    sc.setAttrbute("online",i);
    }
    }
    说明:程序随手写的,还要在每行结尾写br,烦死了,可能有点输入错误什么的,请原谅了.呵呵.
    在jsp中使用时,就用
    在线人数为:<%=config.getServletContext().getAttribute("online")%>就行了,很简单.
  • 原创粉丝点击