熟悉session监听器的请进
public class ContextListener implements HttpSessionListener {
private StudentBeanDao studentBeanDao;
public void setStudentBeanDao(StudentBeanDao studentBeanDao) {
this.studentBeanDao = studentBeanDao;
}
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session创建:" + new java.util.Date());
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("--------------sessionDestroyed------------");
Object obj = se.getSession().getAttribute("userId");
if(obj!=null)
{
studentBeanDao.deleteStudentLog(obj.toString());
}
System.out.println("session销毁:" + new java.util.Date());
}
}
public class OnlineList implements HttpSessionAttributeListener {
private StudentBeanDao studentBeanDao;
private static int count = 0;
public void attributeAdded(HttpSessionBindingEvent se) {
count++;
System.out.println("--------attributeAdded------------");
System.out.println(count);
}
public void attributeRemoved(HttpSessionBindingEvent se) {
count--;
System.out.println("--------attributeRemoved------------");
System.out.println(count);
}
public void attributeReplaced(HttpSessionBindingEvent se) {
}
public void setStudentBeanDao(StudentBeanDao studentBeanDao) {
this.studentBeanDao = studentBeanDao;
}
public static int getCount() {
return count;
}
}
公司有个需求是sessionDestroyed的时候删除登陆日志表里面的一条记录,不过此时会报一个空指针的错误
java.lang.NullPointerException
at com.wiscom.jwxk.common.ContextListener.sessionDestroyed(ContextListener.java:42)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:702)
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:592)
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:680)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:665)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1316)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:619)
obj是可以获得准确的值的,所以应该不是取值问题
在线等 解决立马结账