
求解!!在线急等~~~~一个java问题~~!!!
我使用session监听,但是每次执行都是空指针如果不保存就没有错误。求解此时应该怎么保持数据....谢谢谢谢谢谢谢谢谢谢!!!!!publicclasssetoffli...
我使用session监听 ,但是每次执行都是空指针 如果不保存就没有错误。求解此时应该怎么保持数据....谢谢谢谢谢谢谢谢谢谢!!!!!
public class setoffline extends HibernateDaoSupport implements HttpSessionListener {
public void sessionDestroyed(HttpSessionEvent event) {
com.beans.users usobj=(com.beans.users)event.getSession().getAttribute("usersession");
usobj.setOnline(0);
getHibernateTemplate().update(usobj);//每次执行到此处就出现空指针异常...
//对此调试可以得到usobj对象
//我采用spring注入也失败了,到现在我都不知道怎么去连接数据库,我想肯定是update出错了
}
public void sessionCreated(HttpSessionEvent arg0) {
}
严重: Session event listener threw exception
java.lang.NullPointerException
at com.utils.setoffline.sessionDestroyed(setoffline.java:15)
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:682)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:667)
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
已经确定是spring注入失败了,才出现的空指针怎么办呢!!!!! 展开
public class setoffline extends HibernateDaoSupport implements HttpSessionListener {
public void sessionDestroyed(HttpSessionEvent event) {
com.beans.users usobj=(com.beans.users)event.getSession().getAttribute("usersession");
usobj.setOnline(0);
getHibernateTemplate().update(usobj);//每次执行到此处就出现空指针异常...
//对此调试可以得到usobj对象
//我采用spring注入也失败了,到现在我都不知道怎么去连接数据库,我想肯定是update出错了
}
public void sessionCreated(HttpSessionEvent arg0) {
}
严重: Session event listener threw exception
java.lang.NullPointerException
at com.utils.setoffline.sessionDestroyed(setoffline.java:15)
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:682)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:667)
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
已经确定是spring注入失败了,才出现的空指针怎么办呢!!!!! 展开
4个回答
展开全部
你可以试着用jdbc来做。在session过期之后可能注入会有问题。我当时也是这样做的,也是空指针,最后我用jdbc来做就没事了。
public void sessionDestroyed(HttpSessionEvent arg0) {
User user = (User)arg0.getSession().getAttribute("User");
// System.out.println(user.getUserName()+"session过期,退出系统!");
if(user!=null){
for(int i=0;i<LoginAction.listU.size();i++){
if(user.getUserId()==LoginAction.listU.get(i)){
LoginAction.listU.remove(LoginAction.listU.get(i));
}
}
int logId=(Integer) arg0.getSession().getAttribute("logId");
System.out.println("session过期后的当前用户的日志ID--------"+logId);
DriverManagerDataSource ds = (DriverManagerDataSource)arg0.getSession().getServletContext().getAttribute("dmds");
String url = ds.getUrl();
String username = ds.getUsername();
String password = ds.getPassword();
System.out.println("url "+url+" username "+username+" password "+password);
ClientLogExit logss=new ClientLogExit();
Date date=new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dd=format.format(date);
logss.insertLogs(url, username, password, user.getLoginName(), logId,dd);
logss.updateExitTime(url, username, password, user.getLoginName(), logId,dd);
logss.autoWebSiteExit(url, username, password, user.getUserId());
arg0.getSession().removeAttribute("User");
arg0.getSession().removeAttribute("logId");
}
public void sessionDestroyed(HttpSessionEvent arg0) {
User user = (User)arg0.getSession().getAttribute("User");
// System.out.println(user.getUserName()+"session过期,退出系统!");
if(user!=null){
for(int i=0;i<LoginAction.listU.size();i++){
if(user.getUserId()==LoginAction.listU.get(i)){
LoginAction.listU.remove(LoginAction.listU.get(i));
}
}
int logId=(Integer) arg0.getSession().getAttribute("logId");
System.out.println("session过期后的当前用户的日志ID--------"+logId);
DriverManagerDataSource ds = (DriverManagerDataSource)arg0.getSession().getServletContext().getAttribute("dmds");
String url = ds.getUrl();
String username = ds.getUsername();
String password = ds.getPassword();
System.out.println("url "+url+" username "+username+" password "+password);
ClientLogExit logss=new ClientLogExit();
Date date=new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dd=format.format(date);
logss.insertLogs(url, username, password, user.getLoginName(), logId,dd);
logss.updateExitTime(url, username, password, user.getLoginName(), logId,dd);
logss.autoWebSiteExit(url, username, password, user.getUserId());
arg0.getSession().removeAttribute("User");
arg0.getSession().removeAttribute("logId");
}
2010-12-21
展开全部
是不是 users 的构造函数 里没有 给变量 赋值
把出错的信息发出来看看
把出错的信息发出来看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然错误在第15行,那么有两种可能:
1、getHibernateTemplate()返回了null
2、update(usobj);中出现空指针
自己再看看吧~
1、getHibernateTemplate()返回了null
2、update(usobj);中出现空指针
自己再看看吧~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
个人感觉有可能是getHibernateTemplate()这个方法有问题,因为你这个是内部类,如果变量不是final的话,有可能已经过了他的生命周期,所以就会有空指针了,你看下那个方法在内部类里取出的是什么值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询