1. 程式人生 > >SSH框架,統計網站線上人數

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;
}
}