实例1
package com.cssl.listener;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
/**
* 监听session、application属性的增删改
*
*/
//@WebListener
@Component//加入到springboot组件中
public class AttrListener implements HttpSessionAttributeListener, ServletContextAttributeListener {
/**
* @see 监听session属性新增
*/
public void attributeAdded(HttpSessionBindingEvent se) {
System.out.println("attributeAdded:"+se.getName()+"\t"+se.getValue());
}
/**
* @see 监听session属性修改
*/
public void attributeReplaced(HttpSessionBindingEvent se) {
HttpSession session = se.getSession();
System.out.println("attributeReplaced before:"+se.getName()+"\t"+se.getValue());
System.out.println("attributeReplaced after:"+se.getName()+"\t"+session.getAttribute(se.getName()));
}
/**
* @see 监听session属性删除
*/
public void attributeRemoved(HttpSessionBindingEvent se) {
System.out.println("attributeRemoved:"+se.getName()+"\t"+se.getValue());
}
/**
* @see ServletContextAttributeListener#attributeAdded(ServletContextAttributeEvent)
*/
public void attributeAdded(ServletContextAttributeEvent scae) {
// TODO Auto-generated method stub
}
/**
* @see ServletContextAttributeListener#attributeRemoved(ServletContextAttributeEvent)
*/
public void attributeRemoved(ServletContextAttributeEvent scae) {
// TODO Auto-generated method stub
}
/**
* @see ServletContextAttributeListener#attributeReplaced(ServletContextAttributeEvent)
*/
public void attributeReplaced(ServletContextAttributeEvent scae) {
// TODO Auto-generated method stub
}
}
实例2:
package com.cssl.listener;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* 监听session、application的创建和销毁
*
*/
//@WebListener
@Component//加入到springboot组件中
public class MyListener implements ServletContextListener, HttpSessionListener {
private ServletContext application;
/**
* Default constructor.
*/
public MyListener() {
System.out.println("无参构造。。。");
}
/**
* @see 创建session时候触发
*/
public void sessionCreated(HttpSessionEvent se) {
HttpSession session = se.getSession();
session.setMaxInactiveInterval(30);
System.out.println("sessionCreated id:"+session.getId());
}
/**
* @see session销毁的时候触发
*/
public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
System.out.println("sessionDestroyed id:"+session.getId());
//获得要注销的用户
String username = (String)session.getAttribute("username");
//所有在线用户
List<String> users = (List<String>)application.getAttribute("users");
if(users.contains(username)) {
//用户已在线
users.remove(username);
}
//application.setAttribute("users", users);
}
/**
* @see application销毁
*/
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("application销毁");
}
/**
* @see application创建
*/
public void contextInitialized(ServletContextEvent sce) {
System.out.println("application创建");
application = sce.getServletContext();
application.setAttribute("users", new ArrayList<String>());
}
}