关于JSP在线显示的????

用application对象。
简单描述如下:
当用户登录时维护一个会话对象:UserInfo类的实例,同时UserInfo类实现javax.servlet.http.HttpSessionBindingListener接口:
import java.util.Map;
import java.util.HashMap;
import javax.servlet.http.*;
import javax.servlet.ServletContext;

public class UserInfo implements HttpSessionBindingListener {
// 用户信息
int userId;
String userName;
......

/**
 * 当UserInfo类被绑定到session中时触发这个事件
 * 具体信息请参见Servlet/JSPs的规范
 */
public void valueBound(HttpSessionBindingEvent event) {
HttpSession session = event.getSession ();
ServletContext ctx = session.getServletContext ();
Map map = (Map)ctx.getAttribute ("users");
if (map == null) { // 如果是服务器启动后的第一个登录用户,新建一个容器
map = new HashMap ();
ctx.setAttribute ("users", map);
}

map.put (userName, this); // 把自己加入容器中
}

/**
 * 当UserInfo类从session中删除时触发这个事件
 * 具体信息请参见Servlet/JSPs的规范
 */
public void valueUnbound(HttpSessionBindingEvent event) {
HttpSession session = event.getSession ();
ServletContext ctx = session.getServletContext ();
Map map = (Map)ctx.getAttribute ("users");
map.remove (this); // 把自己从容器中删除
}

......
}

以后在JSP中就可以这样显示在线用户数了:
<%
int userCount = 0;
java.util.Map map = (java.util.Map)application.getAttribute ("users");
if (map == 0) userCount = 0;
else userCount = map.size ();
%>

当然你也可以不实现javax.servlet.http.HttpSessoinBindLisenter接口,而用自己的程序来实现这个功能,但这种方法最保险,也最简单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值