首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

七月16学习日志

2012-11-10 
7月16学习日志??? ? ? ? 今天依然是对项目进行修改和完善。忙里偷闲写了一个统计在线人数并显示名称的功能。

7月16学习日志

?

?? ? ? ? 今天依然是对项目进行修改和完善。忙里偷闲写了一个统计在线人数并显示名称的功能。写之前上网搜索了一下,没找到太令人满意的实现。把代码贴出来共享一下吧。

以下是一个保存在线人数的类,使用了单例模式

?

package com.teamlab.tool;import java.util.Iterator;import java.util.Vector;import com.teamlab.entity.Employee;public class EmployeeList implements java.io.Serializable {private static final EmployeeList employeeList = new EmployeeList();private Vector <Employee> v;private EmployeeList(){v = new Vector<Employee>();}public static EmployeeList getInstance(){return employeeList;}public void addEmployee(Employee employee){if(employee!=null)v.add(employee);}public void removeEmployee(Employee employee){if(employee!=null)v.remove(employee);}public Iterator<Employee> getIterator(){return v.iterator();}public int size(){return v.size();}}

Employee类实现了HttpSessionBindingListener监听器接口。当Employee对象被放到session中或者从session中移除的时候,容器会自动调用valueBound或者valueUnbound方法。

public class Employee implements java.io.Serializable,HttpSessionBindingListener{        private EmployeeList el = EmployeeList.getInstance();        public void valueBound(HttpSessionBindingEvent arg0) {el.addEmployee(this);}public void valueUnbound(HttpSessionBindingEvent arg0) {el.removeEmployee(this);}}
?在Action中声明两个变量并设置相应的get和set方法

?

?

private EmployeeList employeeList = EmployeeList.getInstance();private Iterator<Employee> el = employeeList.getIterator();

?

在jsp页面中就可以通过OGNL表达式访问它们了

?

?

<table cellpadding="3" cellspacing="3""><tr><td style="white-space: nowrap; vertical-align: top; font-family: Arial; font-size: 18px; color: #1a6309;">    Online (<s:property value="employeeList.size()"/>):</td><td style="padding-top: 8px; vertical-align: top;">   <div >  <div style="padding: 0px 10px 7px 0px; float: left;">  <span style='white-space: nowrap;'>  <a class='linkDescribe' href="#"><s:property value="trueName"/></a>   </span>  </div>  </s:iterator>  </div></td></tr></table>



?

热点排行