监听在线用户

监听器的作用是监听Web容器的有效事件,有Servlet容器管理,应用Listener接口监听某个执行程序,根据该程序的需求做出适当的响应

本列应用HttpBindingListener监听接口,监听HTTP会话中对象的绑定信息。它是唯一不需要在web.xml中设定的监听。

HttpBindingListener接口提供两个方法:
valueBound(HttpSessionBindingEvent arg0):当有对象加入session的范围时会被自动调用
valueUnbound(HttpSessionBindingEvent arg0):当有对象从session的范围内移除时会被自动调动

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
创建LoginList.java类来存放用户和在线用户的具体操作

public class LoginList {
	private static LoginList user=new LoginList();
	private Vector vector=null;
	public LoginList(){
		this.vector=new Vector();
	}
	public static LoginList getInstance(){
		return user;
	}
	public boolean addLoginList(String user){		//用户登录
		if(user!=null){
			this.vector.add(user);
			return true;
		}else{
			return false;
		}
	}
	public Vector getList(){						//获取用户列表
		return vector;
	}
	public void removeLoginList(String user){		//删除用户
		if(user!=null){
			vector.removeElement(user);
		}
	}
}

创建LoginNote.java类,实现HttoSessionBindingListener类

public class LoginNote implements javax.servlet.http.HttpSessionBindingListener {
	private String user;
	private LoginList container=LoginList.getInstance();
	public LoginNote(){
		user="";
	}
	public void setUser(String user){
		this.user=user;
	}
	public String getUser(){
		return this.user;
	}
	@Override
	public void valueBound(HttpSessionBindingEvent arg0) {
		System.out.println(this.user+"该用户已经上线");
	}
	@Override
	public void valueUnbound(HttpSessionBindingEvent arg0) {
		System.out.println(this.user+"该用户已经下线");
		if(user!=""){
			container.removeLoginList(user);
		}
	}
	

}

创建LoginList.jsp在线用户页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   <%@ page import="java.util.*" %>
   <%@ page import="com.cn.zj.Filter.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
   <%
    LoginList list=LoginList.getInstance();
  	LoginNote ut=new LoginNote();
  	String name=request.getParameter("user");
  	ut.setUser(name);
  	session.setAttribute("list",ut);
  	list.addLoginList(ut.getUser());
  	session.setMaxInactiveInterval(10);
    %>
<body>
<div align="center">
<table width="400" height="150" border="0" cellpadding="0" cellspacing="0" bgcolor="lightblue">
<tr align="center"><td>用户在线列表</td></tr>
	<tr>
		<td align="center"><br>
		<textarea rows="5" cols="22">
		<%
		Vector vector=list.getList();
		if(vector!=null&&vector.size()>0){
			for(int i=0;i<vector.size();i++){
				out.println(vector.elementAt(i)+"已经登录在线");
			}
		}
		%>
		</textarea><br><br>
		 <a href="loginOut.jsp">返回</a>
		 </td>
	</tr>
</table>
</div>
</body>
</html>

index.jsp页面

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>监听查看在线用户</title>
</head>
<script language="javascript">
function checkEmpty(form){
for(i=0;i<form.length;i++){
if(form.elements[i].value==""){
alert("表单信息不能为空");
return false;
}
}
}
</script>
<link href="css/style.css" rel="stylesheet" type="text/css">
<body>
<div align="center">
  <table width="400" height="150" border="0" cellpadding="0" cellspacing="0" bgcolor="lightblue">
  	<Tr><td>&nbsp;</td></Tr>
    <tr>
      <td align="center">
	    <form name="form" method="post" action="LoginList.jsp" onSubmit="return checkEmpty(form)">
    <input type="text" name="user"><br><br>
    <input type="submit" name="Submit" value="登录上线">
  </form>
	  </td>
    </tr>
  </table>
</div>
</body>
</html>

loginOut.jsp页面

<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<%
         session.invalidate();
 out.println("<script>parent.location.href='index.jsp';</script>");
%>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值