description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.NullPointerException
grad.util.user.op_user.isLogin(op_user.java:178)
org.apache.jsp.login1_jsp._jspService(login1_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.op_user.java 148-205行
 /**
  * 供管理员查询用户信息,管理员可以按帐号,姓名,院系查询用户信息
  * @param account
  * @param name
  * @param college
  * @param type
  * @return
  */
 public ArrayList getAllUserQuery(String account,String name,String college,String type)
{
   Connection conn=null;
   Statement st=null;
   ResultSet rs=null;
   String sql ="select * from t_user where type='"+type+"'";
   if(account!=null&&!account.equals(""))
     sql+=" and account='"+account+"'";
   if(name!=null&&!name.equals(""))
     sql+=" and name ='"+name+"'";
   if(college!=null&&!college.equals(""))
     sql+=" and college like '%"+college+"%'";
   System.out.println(sql);
   ArrayList al=new ArrayList();
   try{
     DataBase ds = new DataBase();
     conn = ds.conn;
     st = conn.createStatement();
     rs = st.executeQuery(sql);
     while (rs.next()) {
       user us=new user();
        us.setId(rs.getInt(1));
        us.setAccount(rs.getString(2));  //178行
        us.setPassword(rs.getString(3));
        us.setType(rs.getInt(4));
        us.setName(rs.getString(5));
        us.setSex(rs.getString(6));
        us.setCollege(rs.getString(7));
        us.setTeacher(rs.getString(8));
        al.add(us);
      }
     return al;
   }catch(Exception e){System.out.println(e.getMessage());return null;}
}
 /**
  * 判断是否允许用户登录
  * @param user_code
  * @param password
  * @param type
  * @return
  */
 public boolean isLogin(String user_code,String password,String type)
 {
   user a = this.getUserByUserCode(user_code,type);
   if(a.getPassword().equals(password))
     return true;
   else
     return false; }

解决方案 »

  1.   

    grad.util.user.op_user.isLogin(op_user.java:178)
    空指针的错误,在用到的时候没有声明
      

  2.   

    1、对象user应该首字母大写吧
    2、很有可能是User对象a为空
    建议把sql语句打印出来然后在pl/sql或者其他什么工具上运行一遍
    错误是在178行   LZ自己找一下那行有几个对象
    再仔细检查时哪个为空
    遇到为题看报错信息    定位到哪一行  然后根据错误信息自己分析一下
      

  3.   

    对象user的写法没问题,其他的代码也没查出什么问题。
    最关键的是我把代码拷到同学电脑上运行全部通过,这是为什么?
    (注:我们两台电脑除了硬件不同,从操作系统到装载的工具软件没有任何区别,甚至于参数设置我都按他的电脑重新设过。)
      

  4.   

    user a = this.getUserByUserCode(user_code,type);
    这里会不会返回null呢if(null!=a && a.getPassword().equals(password))
      

  5.   

    还是数据库问题,把sql2008换成2000就没问题了,只是还是没弄懂SQL2008为什么有问题