<script language=javascript src="服务器监听程序 - Java编程.files/4.js"></script>
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中加入配置:
包名.类名
(注意:类放在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")%>就行了,很简单.
|