当前位置: 代码迷 >> 综合 >> Listener监听器(HttpSessionListener,HttpSessionAttributeListener)
  详细解决方案

Listener监听器(HttpSessionListener,HttpSessionAttributeListener)

热度:9   发布时间:2023-12-25 20:50:12.0

Listener监听器(HttpSessionListener ,HttpSessionAttributeListener)

HttpSessionListener用于实现session的创建和销毁。

统计在线人数

package com.zhiyou100.listener;//import java.util.Hashtable;
//import java.util.Map;import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;/*** Application Lifecycle Listener implementation class CountsListener**/
@WebListener
public class CountsListener implements HttpSessionListener, HttpSessionAttributeListener, HttpSessionActivationListener, HttpSessionBindingListener {int count = 0;/*** Default constructor. */public CountsListener() {// TODO Auto-generated constructor stub}/*** @see HttpSessionListener#sessionCreated(HttpSessionEvent)*/public void sessionCreated(HttpSessionEvent se)  { // TODO Auto-generated method stub
//    	第一种参考方法if (count < 0) {count = 0;}else {count++;}HttpSession session = se.getSession();ServletContext application = session.getServletContext();application.setAttribute("countsList", count);//    	第二种参考方法/*HttpSession session = se.getSession();ServletContext application =session.getServletContext();
//    	获取session idString sessionId = session.getId();if (session.isNew()) {String user = (String)session.getAttribute("user");Map<String, String> online = (Map<String, String>)application.getAttribute("online");if (online == null) {online = new Hashtable<String,String>();}online.put(sessionId, user);application.setAttribute("online", online);}*/}/*** @see HttpSessionBindingListener#valueBound(HttpSessionBindingEvent)*/public void valueBound(HttpSessionBindingEvent event)  { // TODO Auto-generated method stub}/*** @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)*/public void sessionDestroyed(HttpSessionEvent se)  { // TODO Auto-generated method stubif (count > 0) {count--;}HttpSession session = se.getSession();ServletContext application = session.getServletContext();application.setAttribute("countsList", count);/*HttpSession session =se.getSession();ServletContext application = session.getServletContext();
//    	获取session idString sessionId = session.getId();Map<String, String> online = (Map<String, String>)application.getAttribute("online");if (online != null) {
//			删除用户online.remove(sessionId);}application.setAttribute("online", online);*/}/*** @see HttpSessionActivationListener#sessionDidActivate(HttpSessionEvent)*/public void sessionDidActivate(HttpSessionEvent se)  { // TODO Auto-generated method stub}/*** @see HttpSessionAttributeListener#attributeAdded(HttpSessionBindingEvent)*/public void attributeAdded(HttpSessionBindingEvent se)  { // TODO Auto-generated method stub}/*** @see HttpSessionAttributeListener#attributeRemoved(HttpSessionBindingEvent)*/public void attributeRemoved(HttpSessionBindingEvent se)  { // TODO Auto-generated method stub}/*** @see HttpSessionAttributeListener#attributeReplaced(HttpSessionBindingEvent)*/public void attributeReplaced(HttpSessionBindingEvent se)  { // TODO Auto-generated method stub}/*** @see HttpSessionActivationListener#sessionWillPassivate(HttpSessionEvent)*/public void sessionWillPassivate(HttpSessionEvent se)  { // TODO Auto-generated method stub}/*** @see HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent)*/public void valueUnbound(HttpSessionBindingEvent event)  { // TODO Auto-generated method stub}}

在线${userList}人

或者

<%=sessionId %>

<%online.get(sessionId) %>

  相关解决方案