public synchronized void sessionDestroyed(HttpSessionEvent arg0) { //synchronized处理线程同步,当同一个时候几个用户同时来访问是,同样可以记录所有信息
session = arg0.getSession();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String leavetime = sdf.format(new Date()); UserModel us = (UserModel) session.getAttribute("userModel");
SupervisionLogin su = new SupervisionLogin(); System.out.println(us.getName() + ":已离开");
int userid = Integer.parseInt(us.getUserID());
su.setUserid(userid);
su.setLeavetime(leavetime);
su.setCreattime(us.getCreateTime());
su.update();
System.out.println("离开时间:" + leavetime);
}我写了一个 注销时候记录注销时间的 JVAV 类 在点击注销按钮的时候 调用 session.invalidate()
能记录离开时间 和 离开的SESSION 的一些信息 就是莫名奇妙有时候会报一个空指针错误
不影响记录的结果 但是, 为什么会出现这样的情况呢?是那个对象没实例化吗 ?在线等高手给个答案 谢谢了!
错误:
严重: Session event listener threw exception
java.lang.NullPointerException
at com.oaking.erp.supervision.Session.sessionDestroyed(Session.java:34)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:675)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:633)
at org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1072)
at org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:149)
at org.apache.jsp.erp.supervision.saveonline_jsp._jspService(org.apache.jsp.erp.supervision.saveonline_jsp:61)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
在线等
session = arg0.getSession();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String leavetime = sdf.format(new Date()); UserModel us = (UserModel) session.getAttribute("userModel");
SupervisionLogin su = new SupervisionLogin(); System.out.println(us.getName() + ":已离开");
int userid = Integer.parseInt(us.getUserID());
su.setUserid(userid);
su.setLeavetime(leavetime);
su.setCreattime(us.getCreateTime());
su.update();
System.out.println("离开时间:" + leavetime);
}我写了一个 注销时候记录注销时间的 JVAV 类 在点击注销按钮的时候 调用 session.invalidate()
能记录离开时间 和 离开的SESSION 的一些信息 就是莫名奇妙有时候会报一个空指针错误
不影响记录的结果 但是, 为什么会出现这样的情况呢?是那个对象没实例化吗 ?在线等高手给个答案 谢谢了!
错误:
严重: Session event listener threw exception
java.lang.NullPointerException
at com.oaking.erp.supervision.Session.sessionDestroyed(Session.java:34)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:675)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:633)
at org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1072)
at org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:149)
at org.apache.jsp.erp.supervision.saveonline_jsp._jspService(org.apache.jsp.erp.supervision.saveonline_jsp:61)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
在线等
就会被调用session 过期也会被调用楼上的什么意思?我不明白
这个34行是哪一行,打印一下那个变量。
检查一下,哪个地方没有初始化
把行数贴出来看看。
session = arg0.getSession();
是否为空
调用这个方法时session已经失效了吧
既然session失效了,从session中取变量当然是null
调用这个方法时session已经失效了吧
既然session失效了,从session中取变量当然是null
的后面还有代码没,贴全点
你这是session 过期了, 你在调用session.invalidate,就出错了,
你写代码你得要让代码流畅,健壮啊.
public synchronized void sessionDestroyed(HttpSessionEvent arg0) { //synchronized处理线程同步,当同一个时候几个用户同时来访问是,同样可以记录所有信息
if (arg0 == null)return;
session = arg0.getSession();
if(session == null)return;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String leavetime = sdf.format(new Date()); UserModel us = (UserModel) session.getAttribute("userModel");
SupervisionLogin su = new SupervisionLogin(); System.out.println(us.getName() + ":已离开");
int userid = Integer.parseInt(us.getUserID());
su.setUserid(userid);
su.setLeavetime(leavetime);
su.setCreattime(us.getCreateTime());
su.update();
System.out.println("离开时间:" + leavetime);
}