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

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;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值