1,在web项目下创建一个listener类,可以自动的在web.xml里加入下面代码
2,或者自己创建类,然后在<web-app>下配置监听器,监听器会先于过滤器和servlet加载
<listener> <listener-class> com.example.listener.Listener </listener-class> </listener>
3,在listener类里:
package com.example.listener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.apache.catalina.connector.Request;
/**
* Application Lifecycle Listener implementation class aaa
*
*/
public class Listener implements HttpSessionListener, HttpSessionAttributeListener {
/**
* Default constructor.
*/
public Listener() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpSessionAttributeListener#attributeRemoved(HttpSessionBindingEvent)
*/
public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
/**
* @see HttpSessionAttributeListener#attributeAdded(HttpSessionBindingEvent)
*/
public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
/**
* @see HttpSessionAttributeListener#attributeReplaced(HttpSessionBindingEvent)
*/
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
/**
* @see HttpSessionListener#sessionCreated(HttpSessionEvent)
*/
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
System.out.println("session================"+session.getId());
}
/**
* @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
*/
public void sessionDestroyed(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
}
}
遇到一个问题,一般请求来时会创建一个会话,但是一直没有调用sessioncreate方法,一直没有找到问题,后来发现请求时一个静态页面,并没有转发给servlet处理,所以也不会出现session会话
4,HttpSessionListener:监听session的会话的创建和销毁,可以用于统计在线用户数,记录用户当前登录状态等,
5,HttpSessionAttributeListener:监听session里面的key是否有变动,塞值和删值都会触发监听事件