实现监听器接口,种类很多
-
编写监听器,实现监听器接口
package com.yl.listener; import jakarta.servlet.ServletContext; import jakarta.servlet.http.HttpSessionEvent; import jakarta.servlet.http.HttpSessionListener; public class OnlineCountListener implements HttpSessionListener { //创建session监听 一旦创建session就会触发 public void sessionCreated(HttpSessionEvent se) { ServletContext servletContext = se.getSession().getServletContext(); System.out.println(se.getSession().getId()); Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount"); if(onlineCount==null){ onlineCount = new Integer(1); }else{ int count = onlineCount.intValue(); onlineCount = new Integer(count + 1); } servletContext.setAttribute("OnlineCount",onlineCount); } //销毁session监听 一旦销毁session就会触发 public void sessionDestroyed(HttpSessionEvent se) { ServletContext servletContext = se.getSession().getServletContext(); Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount"); if(onlineCount==null){ onlineCount = new Integer(0); }else{ int count = onlineCount.intValue(); onlineCount = new Integer(count - 1); } servletContext.setAttribute("OnlineCount",onlineCount); } } /* Seession销毁 1.手动销毁 se.getSession().invalidate(); 2.自动销毁 web.xml中设置session过期时间 */
-
web.xml注册监听器
<!--注册监听器--> <listener> <listener-class>com.yl.listener.OnlineCountListener</listener-class> </listener> <!--设置session过期时间--> <session-config> <session-timeout>1</session-timeout> </session-config>