您的位置:首页 > 运维架构 > 网站架构

SSH框架,统计网站在线人数

2013-09-12 16:51 429 查看
dao层实现类

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

public TblUser checkLogin(TblUser user) {

Session session=this.getSession();

List list=session.createQuery("from TblUser where username=? and password=?").setString(0, user.getUsername())

.setString(1, user.getPassword()).list();

return list!=null&&list.size()>0?(TblUser)list.get(0):null;

}

}

监听listener

public class SessionListener implements HttpSessionListener {

// 创建集合保存session对象

private static Hashtable sessionList = new Hashtable();

// session创建触发的方法

public void sessionCreated(HttpSessionEvent event) {

sessionList.put(event.getSession().getId(), event.getSession());

}

// session过期或者销毁触发的方法

public void sessionDestroyed(HttpSessionEvent event) {

sessionList.remove(event.getSession().getId());

}

// 返回全部session对象集合

static public Iterator getSet() {

return sessionList.values().iterator();

}

// 根据session对象的id返回session对象

static public HttpSession getSession(String sessionId) {

return (HttpSession) sessionList.get(sessionId);

}

}

Action

public class LoginAction extends ActionSupport {

private TblUser user;

private String message;

private UserService service;

public String execute() throws Exception {

Map session = ActionContext.getContext().getSession();

boolean flag = false;// 标志用户是否已经登录

user=service.checkLogin(user);

if (user!=null) {

int count = 0;

List<TblUser> userList = new ArrayList<TblUser>();

Iterator iterator = SessionListener.getSet();

while (iterator.hasNext()) {

// 得到每个session

HttpSession se = (HttpSession) iterator.next();

TblUser u = (TblUser) se.getAttribute("user");

if (u != null) {

userList.add(u);

count++;

//如果当前的登录的用户session中已经有该用户的Id了,则将flag置为true

if (user.getId()==(u.getId())) {

flag = true;

}

}

}

// 如果用户没有登录

if (!flag) {

session.put("user", user);

userList.add(user);

count++;

session.put("userList", userList);

session.put("count", count);

System.out.println(count+".........");

setMessage("在线人数是:" + count);

return SUCCESS;

} else {

setMessage("您已经在线了!");

return ERROR;

}

} else {

setMessage("用户密码错误!");

return ERROR;

}

}

public TblUser getUser() {

return user;

}

public void setUser(TblUser user) {

this.user = user;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

public UserService getService() {

return service;

}

public void setService(UserService service) {

this.service = service;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: