﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-呐鹤西飞看春秋-文章分类-JAVA</title><link>http://www.blogjava.net/jnzgrass/category/18500.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:46:24 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:46:24 GMT</pubDate><ttl>60</ttl><item><title>关于JSP在线显示及单人登陆解决办法</title><link>http://www.blogjava.net/jnzgrass/articles/96129.html</link><dc:creator>东舟</dc:creator><author>东舟</author><pubDate>Fri, 26 Jan 2007 05:42:00 GMT</pubDate><guid>http://www.blogjava.net/jnzgrass/articles/96129.html</guid><wfw:comment>http://www.blogjava.net/jnzgrass/comments/96129.html</wfw:comment><comments>http://www.blogjava.net/jnzgrass/articles/96129.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jnzgrass/comments/commentRss/96129.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jnzgrass/services/trackbacks/96129.html</trackback:ping><description><![CDATA[<font size="2">当用户登录时维护一个会话对象：UserInfo类的实例，同时UserInfo类实现javax.servlet.http.HttpSessionBindingListener接口: <br />import <a title="呐鹤" href="jnzgrass" >JAVA</a>.util.Map; <br />import <a title="呐鹤" href="jnzgrass" >JAVA</a>.util.HashMap; <br />import javax.servlet.http.*; <br />import javax.servlet.ServletContext; <br /><br />public class UserInfo implements HttpSessionBindingListener { <br />// 用户信息 <br />int userId; <br />String userName; <br />...... <br /><br />/** <br /> * 当UserInfo类被绑定到session中时触发这个事件 <br /> * 具体信息请参见Servlet/JSPs的规范 <br /> */ <br />public void valueBound(HttpSessionBindingEvent event) { <br />HttpSession session = event.getSession (); <br />ServletContext ctx = session.getServletContext (); <br />Map map = (Map)ctx.getAttribute ("users"); <br />if (map == null) { // 如果是服务器启动后的第一个登录用户，新建一个容器 <br />map = new HashMap (); <br />ctx.setAttribute ("users", map); <br />} <br /><br />map.put (userName, this); // 把自己加入容器中 <br />} <br /><br />/** <br /> * 当UserInfo类从session中删除时触发这个事件 <br /> * 具体信息请参见Servlet/JSPs的规范 <br /> */ <br />public void valueUnbound(HttpSessionBindingEvent event) { <br />HttpSession session = event.getSession (); <br />ServletContext ctx = session.getServletContext (); <br />Map map = (Map)ctx.getAttribute ("users"); <br />map.remove (this.userName); // 把自己从容器中删除 <br />} <br /><br />...... <br />} <br /><br />以后在JSP中就可以这样显示在线用户数了： <br />&lt;% <br />int userCount = 0; <br /><a title="呐鹤" href="jnzgrass" >JAVA</a>.util.Map map = (java.util.Map)application.getAttribute ("users"); <br />if (map == 0) userCount = 0; <br />else userCount = map.size (); <br />%&gt;; <br /><br /></font><img src ="http://www.blogjava.net/jnzgrass/aggbug/96129.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jnzgrass/" target="_blank">东舟</a> 2007-01-26 13:42 <a href="http://www.blogjava.net/jnzgrass/articles/96129.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>