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;
}
}
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;
}
}
相关文章推荐
- 利用HttpSessionListener实现网站在线人数统计功能
- php实现统计网站在线人数的方法
- 网站在线访问人数统计并计算停留时间
- 使用servlet统计网站在线人数的方法
- 利用HttpSessionListener实现网站在线人数统计功能
- 统计网站访问量,在线人数
- 转:如何实现网站在线人数以及历史访问人数的统计
- 统计网站在线人数
- SSH框架下的在线人数统计的一种解决途径
- 网站今日访问,总访问及在线人数统计 asp.net
- 利用HttpSessionListener实现网站在线人数统计功能
- Servlet监听器实现网站在线人数统计
- 利用HttpSessionListener实现网站在线人数统计功能
- 网站在线人数的精确统计的个人看法
- 网站在线人数以及历史访问人数的统计代码
- 也谈网站在线人数统计
- 利用HttpSessionListener实现网站在线人数统计功能(转自http://www.web521.com/web/558068/T645231.shtml)
- 关于jsp内置对象Session和Cookie使用的肤浅理解,如何使用Session来统计网站在线人数
- 利用HttpSessionListener实现网站在线人数统计功能
- Asp.Net MVC3.0网站统计登录认证的在线人数