用监听器实现的简单的网络在线人员列表

监听器:
package org.listenerdemo;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class OnlineUserList implements ServletContextListener,HttpSessionAttributeListener,HttpSessionListener
{
	private ServletContext app = null;
	public void contextInitialized(ServletContextEvent sce){
		this.app = sce.getServletContext();
		this.app.setAttribute("online",new TreeSet());//准备集合
	}
	public void contextDestroyed(ServletContextEvent sce){}
	public void attributeAdded(HttpSessionBindingEvent se){
		Set all = (Set) this.app.getAttribute("online");
		all.add(se.getValue());
		this.app.setAttribute("online",all);
	} 
	public void attributeRemoved(HttpSessionBindingEvent se){
		Set all = (Set) this.app.getAttribute("online");
		all.remove(se.getSession().getAttribute("userid"));
		this.app.setAttribute("online",all);
	}  
	public void attributeReplaced(HttpSessionBindingEvent se){} 
	public void sessionCreated(HttpSessionEvent se){} 
	public void sessionDestroyed(HttpSessionEvent se){
		Set all = (Set) this.app.getAttribute("online");
		all.remove(se.getSession().getAttribute("userid"));
		this.app.setAttribute("online",all);
	} 
 
 
}
/* web.xml 配置
	<listener>
		<listener-class>
		org.listenerdemo.OnlineUserList	
		</listener-class>
	</listener>
	</servlet-mapping>
	<session-config>
		<session-timeout>1</session-timeout>
	</session-config>
*/


登陆:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*"%>
<html>
<head>
	<title>www.baidu.com</title>
</head>
<body>
	<form action="login.jsp" method="post">
	用户ID: <input type="text" name="userid">
	<input type="submit" value="登陆">
	</form>
	<%
	request.setCharacterEncoding("GBK");
	%>
	<%
		String userid = request.getParameter("userid");
		if(!(userid==null ||"".equals(userid))){
			session.setAttribute("userid",userid);
			response.sendRedirect("list.jsp");
		}
	%>
</body>
</html>


在线成员列表:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*"%>
<html>
<head>
	<title>www.baidu.com</title>
	
</head>
<body>
<%
	request.setCharacterEncoding("GBK");
%>
	<%
		Set all = (Set)this.getServletContext().getAttribute("online");
		Iterator iter = all.iterator();
		while(iter.hasNext()){
	%>
		<h3><%=iter.next()%></h3>
	<%
		}
	%>
</body>
</html>


本页面用监听器实现了在线人员的列表显示,登陆后,session-timeou 为1分钟

在监听器中,实现了ServletContextListener,HttpSessionAttributeListener,HttpSessionListener 的个别方法,以实现人员的登陆与注销.

只在了解监听器(学习中.........)

你可能感兴趣的:(java,xml,Web,jsp,servlet)