SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
        at org.apache.jsp.userLogin_jsp._jspService(userLogin_jsp.java:93)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:722)

解决方案 »

  1.   

    空指针
    最基本的。
    应该是
    service中的哪个对象忘了实例化了吧?
      

  2.   

    网页对应的是
    HTTP Status 500 -type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException: An exception occurred processing JSP page /userLogin0.jsp at line 4744:                             if (login.isValidUser()) {
    45:                                 session.setAttribute("username", username);
    46:                                 if (login.isValidPassword()) {
    47:                                     if (ran.equals(random)) {
    48:                                         session.setAttribute("userPassword", userpassword);
    49:                                         response.sendRedirect("index.jsp");
    50:                                     } else {
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    root causejava.lang.NullPointerException
    org.apache.jsp.userLogin0_jsp._jspService(userLogin0_jsp.java:105)
    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:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
    我的第47行怎么错了,找不到原因
      

  3.   

                  if (ran.equals(random)) {你在页面比较是否相等?估计是random这个字符串没有值,你可以输出测试下。或者用debug
      

  4.   

    userLogin0.jsp
    <%@page import="comj.*"%>
    <%@ page language="java" contentType="text/html;charset=utf-8"%>
    <%@ page import="java.sql.*"%>
    <%--<jsp:useBean id="dbconn" scope="session" class="OpenDB"/>
    <jsp:useBean id="login" scope="session" class="login"/>--%>
    <html>
        <head>
            <title>管理系统</title>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        </head>
        <body background="#00FFFF">
            <%
                        String username = request.getParameter("txtloginName");
                        String userpassword = request.getParameter("txtpassword");
                        String confirm = request.getParameter("conFirm");
                        String ran = request.getParameter("yzm");
                        String random = String.valueOf(request.getSession().getAttribute("random"));
                        if (username == "") {
            %>
            <center><font size="5">
                    <b>登录失败</b><br><br>
                    <b>请不要将用户名省略,谢谢喽!</b><br><br>
                    <input type="button" name="goback" value="返回" onClick="javascript:window.history.go(-1);">
                </font></center>        <%            }
                        if (username != "" && userpassword == "") {
            %>
            <center><font size="5">
                    <b>登录失败</b><br><br>
                    <b>请不要将密码省略,没有密码可是登不上的哦!</b><br><br>
                    <input type="button" name="goback" value="返回" onClick="javascript:window.history.go(-1)">
                </font></center>
                <%            }
                            if (username != "" && userpassword != "") {
                                System.out.println(username);
                                System.out.println(userpassword);
                                OpenDB dbconn = new OpenDB();
                                Login0 login = new Login0();
                                login.userName = username;
                                login.userPassword = request.getParameter("txtpassword");
                                username = request.getParameter("txtloginName");
                                login.setConnection(dbconn.getConnection());
                                if (login.isValidUser()) {
                                    session.setAttribute("username", username);
                                    if (login.isValidPassword()) {
                                        if (ran.equals(random)) {
                                            session.setAttribute("userPassword", userpassword);
                                            response.sendRedirect("index.jsp");
                                        } else {
                %>
            <center><font size="5">
                    <b>登录失败,请检查您的验证码</b>
                </font></center><br><br>
            <center>
                <input type="button" name="goback" value="返回" onClick="javascript:window.history.go(-1)">
            </center>
            <%                                            }                                        } else {
            %>
            <center><font size="5">
                    <b>登录失败,请检查您的密码</b>
                </font></center><br><br>
            <center>
                <input type="button" name="goback" value="返回" onClick="javascript:window.history.go(-1)">
            </center>
            <%                             }
                                        } else {
            %>
            <center><font size="5">
                    <b>登录失败,没有此用户名</b>
                </font></center><br><br>
            <center>
                <input type="button" name="goback" value="返回" onClick="javascript:window.history.go(-1)">
            </center>
            <%                }
                        }
            %>
        </body>
    </html>
    Random.jsp
    <%@ page contentType="image/jpeg"%>
    <%@ page import="java.awt.*,java.awt.image.*"%>
    <%@ page import="java.util.*,javax.imageio.*"%>
    <%@ page import="java.io.OutputStream"%><%!Color getRandColor(int fc, int bc) {
            Random r = new Random();
            if (fc > 255) {
                fc = 255;
            }
            if (bc > 255) {
                bc = 255;
            }
            int red = fc + r.nextInt(bc - fc);
            int green = fc + r.nextInt(bc - fc);
            int blue = fc + r.nextInt(bc - fc);
            return new Color(red, green, blue);
        }%><%
                try {
                    response.setHeader("Parama", "No-cache");
                    response.setHeader("Cache-Control", "no-cache");
                    response.setDateHeader("Expires", 0);                Random r = new Random();                int width = 60, height = 20;
                    BufferedImage pic = new BufferedImage(width, height,
                            BufferedImage.TYPE_INT_RGB);
                    OutputStream os = response.getOutputStream();
                    Graphics gc = pic.getGraphics();                gc.setColor(getRandColor(200, 250));
                    gc.fillRect(0, 0, width, height);                gc.setFont(new Font("Times New Roman", Font.PLAIN, 18));                gc.setColor(getRandColor(160, 200));
                    for (int i = 0; i < 200; i++) {
                        int x1 = r.nextInt(width);
                        int y1 = r.nextInt(height);
                        int x2 = r.nextInt(15);
                        int y2 = r.nextInt(15);
                        gc.drawLine(x1, y1, x1 + x2, y1 + y2);
                    }                gc.setColor(getRandColor(120, 240));
                    for (int i = 0; i < 100; i++) {
                        int x = r.nextInt(width);
                        int y = r.nextInt(height);
                        gc.drawOval(x, y, 0, 0);
                    }                String RS = "";
                    String rn = "";
                    for (int i = 0; i < 4; i++) {
                        rn = String.valueOf(r.nextInt(10));
                        RS += rn;                    gc.setColor(new Color(20 + r.nextInt(110), 20 + r.nextInt(110),
                                20 + r.nextInt(110)));
                        gc.drawString(rn, 13 * i + 6, 16);
                    }                session.setAttribute("random", RS);
                    gc.dispose();
                    ImageIO.write(pic, "jpeg", os);                os.flush();
                    os.close();
                    os = null;
                    response.flushBuffer();
                    out.clear();
                    out = pageContext.pushBody();
                } catch (IllegalStateException e) {
                    System.out.println(e.getMessage());
                    e.printStackTrace();
                }
    %>