运用HttpSessionListener统计在线人数
使用HttpSessionListener统计在线人数
1.新建一个类实现HttpSessionListener接口,并实现sessionCreated和sessionDestroyed方法
package cn.com.myblog.util; import java.util.HashSet; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class OnlineBodyCount implements HttpSessionListener { /** * 新建session */ @SuppressWarnings("unchecked") @Override public void sessionCreated(HttpSessionEvent event) { HttpSession session=event.getSession(); ServletContext application=session.getServletContext(); HashSet<HttpSession> sessions=(HashSet<HttpSession>)application.getAttribute("sessions"); if(sessions==null){ sessions=new HashSet<HttpSession>(); application.setAttribute("sessions",sessions); } sessions.add(session); } /** * session销毁 */ @SuppressWarnings("unchecked") @Override public void sessionDestroyed(HttpSessionEvent event) { HttpSession session=event.getSession(); ServletContext application=session.getServletContext(); HashSet<HttpSession> sessions=(HashSet<HttpSession>)application.getAttribute("sessions"); sessions.remove(session); } }
2.写一个方法获取application保存的对象
@SuppressWarnings("unchecked") public String online_body(){ HttpServletRequest request=ServletActionContext.getRequest(); ServletContext application=request.getSession().getServletContext(); HashSet<HttpSession> sessions=(HashSet<HttpSession>)application.getAttribute("sessions"); if(sessions!=null &&!sessions.isEmpty()){ System.out.println(sessions.size()); } return null; }