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>
?