2009-4-28 17:20:49 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.webcontent.logindo_jsp._jspService(org.apache.jsp.webcontent.logindo_jsp:101)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    跟踪调试一下看看是不是null值?
      

  2.   

    空指针是比较常见的错误你把这101行(org.apache.jsp.webcontent.logindo_jsp:101)附近的变量都打印一边肯定是存在空值的情况再根据这个空值去检查你的程序
      

  3.   

    我觉得他说得有道理,你可以试一下,看看是那个变量为什么是空值了?是不是不同一个变量来的,比方是用了内置的session,调用getAttribute(),调成别的了
      

  4.   

    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 
    <% 
    String path = request.getContextPath(); 
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
    %> 
    <%@page import="java.sql.*" %> 
    <%@page import="com.user.*" %> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    <html> 
      <head> 
        <base href=" <%=basePath%>"> 
        <title>My JSP 'logindo.jsp' starting page </title>    
    <meta http-equiv="pragma" content="no-cache"> 
    <meta http-equiv="cache-control" content="no-cache"> 
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
    <meta http-equiv="description" content="This is my page"> 
    <!-- 
    <link rel="stylesheet" type="text/css" href="styles.css"> --> 
      </head>  
       
      <body> 
        <% 
        request.setCharacterEncoding("GBK"); 
        String pass=request.getParameter("password"); 
        String name =request.getParameter("username"); 
        ResultSet rs=null; 
        Connection con=null;  
        PreparedStatement pStatement=null; 
        try{ 
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
        con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName =pushdb","sa","sa"); 
        String sql="selecct*from user where username=?and password=?"; 
        pStatement=con.prepareStatement(sql); 
        pStatement.setString(1,name); 
        pStatement.setString(2,pass); 
        rs=pStatement.executeQuery(); 
        if(rs.next()){   
    userlog user=new userlog(); 
        user.setUsername(name); 
        user.setPassword(pass);
    session.setAttribute("USER",user);
        response.sendRedirect("index.jsp"); 
        }else{ 
        response.sendRedirect("loginerror.jsp"); 
        }  
        }catch(ClassNotFoundException e){ 
        out.println("发生错误!错误原因:加载数据库驱动失败"); 
        }catch(SQLException e){ 
        out.println("发生错误!错误原因:"+e.getMessage()); 
        }finally{ 
        rs.close(); 
        pStatement.close(); 
        con.close(); 
        } 
        %> 
      </body> 
    </html> 
      

  5.   

    在apache中报的错是这样的:org.apache.jasper.JasperException: Exception in JSP: /webcontent/logindo.jsp:5249:     }catch(SQLException e){ 
    50:     out.println("发生错误!错误原因:"+e.getMessage()); 
    51:     }finally{ 
    52:     rs.close(); 
    53:     pStatement.close(); 
    54:     con.close(); 
    55:     } 
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.NullPointerException
    org.apache.jsp.webcontent.logindo_jsp._jspService(org.apache.jsp.webcontent.logindo_jsp:102)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      

  6.   

    String sql="selecct*from user where username=?and password=?";  select写错了注意?和and之间有个空格 
    空指针的话 你自己调试下看看,程序里面写几句System.out.println()语句打印出来看看值是多少