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