使用Servlet监听器统计在线用户使用Servlet监听器可以统计在线用户,具体实现方法如下:1.通过ServletContext监听初始化一个application对象,保存在线用户列表;2.通过Session监听当用户登录成功设置Session属性时将用户名保存在列表中;3.通过Session监听当用户注销登录时将用户名从列表中删除。实例:OnlineListener.java:packagemgc.listener.test;importjava.util.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassOnlineListenerimplementsServletContextListener,ServletContextAttributeListener,HttpSessionListener,HttpSessionAttributeListener{privateServletContextapplication=null;privateHttpSessionsession=null;publicvoidcontextInitialized(ServletContextEventsce){//初始化一个application对象this.application=sce.getServletContext();//设置一个列表属性,用于保存在线用户名this.application.setAttribute("online",newArrayList());}publicvoidcontextDestroyed(ServletContextEventsce){}publicvoidattributeAdded(ServletContextAttributeEventscab){}publicvoidattributeRemoved(ServletContextAttributeEventscab){}publicvoidattributeReplaced(ServletContextAttributeEventscab){}publicvoidsessionCreated(HttpSessionEventse){}publicvoidsessionDestroyed(HttpSessionEventse){//取得用户名列表Listonline=(List)this.application.getAttribute("online");//取得当前用户名Stringusername=(String)se.getSession().getAttribute("username");//将此用户名从列表中删除online.remove(username);//将删除后的列表重新设置到application属性中this.application.setAttribute("online",online);}publicvoidattributeAdded(HttpSessionBindingEventse){//取得用户名列表Listonline=(List)this.application.getAttribute("online");//将当前用户名添加到列表中online.add(se.getValue());//将添加后的列表重新设置到application属性中this.application.setAttribute("online",online);}publicvoidattributeRemoved(HttpSessionBindingEventse){}publicvoidattributeReplaced(HttpSessionBindingEventse){}}web.xml:添加
mgc.listener.test.OnlineListenersessionlistener.jsp:<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="java.util.*"%>
sessionlistener用户名:注销<%Stringusername=request.getParameter("username");if(username!=null){session.setAttribute("username",username);}%>在线用户:
<%Listonline=(List)getServletContext().getAttribute("online");Iteratoriter=online.iterator();while(iter.hasNext()){%><%=iter.next()%><%}%>logout.jsp:<%@pagecontentType="text/html;charset=GB2312"%>logout<%session.invalidate();response.setHeader("refresh","3;URL=onlinelistener.jsp");%>注销成功!
3秒后自动返回登录页面
如果没有跳转,请点这里<%@pagecontentType="text/html;charset=GB2312"%>logout<%session.invalidate();response.setHeader("refresh","3;URL=onlinelistener.jsp");%>注销成功!
3秒后自动返回登录页面
如果没有跳转,请点这里