HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause java.lang.NullPointerException
com.csu.dao.UsersDaoImpl.findLogin(UsersDaoImpl.java:97)
com.csu.service.LoginService.isLogin(LoginService.java:22)
com.csu.action.LoginAction.execute(LoginAction.java:46)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept

解决方案 »

  1.   

    com.csu.dao.UsersDaoImpl.findLogin(UsersDaoImpl.java:97)
    UsersDaoImpl类的findLogin方法报空
      

  2.   

    java.lang.NullPointerException
     com.csu.dao.UsersDaoImpl.findLogin(UsersDaoImpl.java:97)
     com.csu.service.LoginService.isLogin(LoginService.java:22)
     com.csu.action.LoginAction.execute(LoginAction.java:46)
     空指针异常,找到上面的类,对应的行的代码。
      

  3.   

    package com.csu.dao;import java.util.Iterator;
    import java.util.List;import org.hibernate.Query;
    import org.hibernate.Session;
    import org.springframework.orm.hibernate3.HibernateTemplate;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.csu.po.Users;
    import com.csu.util.*;public class UsersDaoImpl extends  HibernateDaoSupport implements UsersDao { public void delete(Long id) {
    /*Session session=HibernateUtil.getSession();
    session.beginTransaction();
    //使用HQL查询
    String hql="DELETE Users WHERE id=?";
    Query q = session.createQuery(hql);
    q.setLong(0, id);
    q.executeUpdate();

    //事务提交
    session.getTransaction().commit();
    //关闭session
    HibernateUtil.closeSession(session);
            */
    this.getHibernateTemplate().delete(this.getHibernateTemplate().get(Users.class, id));
    } public List queryAll() {
    /*Session session=HibernateUtil.getSession();
    String hql="FROM Users as users ";
    Query q=session.createQuery(hql);
    List list = q.list();
    Users user = (Users) list.get(0);
    System.out.println(user.getName());
    HibernateUtil.closeSession(session);
    return list;
    */
    return this.getHibernateTemplate().find("from Users");
    } public Users queryById(Long id) {
    /*
     * 
     Session session=HibernateUtil.getSession();
    String hql="FROM Users as users WHERE users.id=?";
    Query q=session.createQuery(hql);
    q.setLong(0, id);
    List list=q.list();
    Users u=null;
    //遍历是否存在该id的产品,如果存在就进行输出
    Iterator  iter=list.iterator();
    if(iter.hasNext()){
    u=(Users) iter.next();
    }

    HibernateUtil.closeSession(session);
    return u;
    */
    return (Users)this.getHibernateTemplate().get(Users.class, id);

    }
        
    //添加用户
    public void save(Users u) {
    //创建Session
    //Session session = HibernateUtil.getSession();

    //开启事物
    //session.beginTransaction();
    //保存数据
    //session.save(u);
    //事务提交
    //session.getTransaction().commit();
    //关闭session
    //HibernateUtil.closeSession(session);
    this.getHibernateTemplate().save(u);
    } public void update(Users u) {
    /*
     Session session = HibernateUtil.getSession();
    session.beginTransaction();
    session.update(u);
    session.getTransaction().commit();
    HibernateUtil.closeSession(session);
    */
    this.getHibernateTemplate().saveOrUpdate(u);
    } public boolean findLogin(Users u) {
    // TODO Auto-generated method stub
    String hql="from Users where name='"+u.getName()+"'and password='"+u.getPassword()+"'";
    System.out.println(hql);
    List userlist=this.getHibernateTemplate().find(hql);
    if(userlist.size()>0)  return true;
    else 
    return false;
    } }
      

  4.   

    if(userlist.size()>0) return true;
    如果没有找到用户,userlist = null;这句就会报空
      

  5.   

    看了你的代码,应该是Users对象的name或者password为空,所以报错,如下:
    String hql="from Users where name='"+u.getName()+"'and password='"+u.getPassword()+"'";
    上边代码在使用 u.getName() 进行字符连接操作时,要确保u.getName()不等于null。
    具体做法是,使用之前进行为空判断if(null!=u.getName()){...}
      

  6.   

    把 userlist.size() 换成 userlist.isEmpty(),同时确保参数穿过来正常