Java Servlet.service()引发NullPointerException

Java Servlet.service()引发NullPointerException,java,jsp,servlets,nullpointerexception,Java,Jsp,Servlets,Nullpointerexception,我真的很困惑为什么会抛出这个特殊的异常。如果我让servlet直接指向另一个JSP,它就可以正常工作。这是我得到的错误的堆栈跟踪 17:13:51,190 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/ProjectServlet].[jsp]] (http-localhost-127.0.0.1-8080-2) Servlet.service() for servlet jsp threw

我真的很困惑为什么会抛出这个特殊的异常。如果我让servlet直接指向另一个JSP,它就可以正常工作。这是我得到的错误的堆栈跟踪

17:13:51,190 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/ProjectServlet].[jsp]] (http-localhost-127.0.0.1-8080-2) Servlet.service() for servlet jsp threw exception: java.lang.NullPointerException
    at org.apache.jsp.createProfile_jsp._jspService(createProfile_jsp.java:74)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) [jbossweb-7.0.13.Final.jar:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) [jbossweb-7.0.13.Final.jar:]
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) [jbossweb-7.0.13.Final.jar:]
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) [jbossweb-7.0.13.Final.jar:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:840) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:622) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:560) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:488) [jbossweb-7.0.13.Final.jar:]
    at ecollaborator.Servlet.CreateAccountServlet.gotoPage(CreateAccountServlet.java:55) [classes:]
    at ecollaborator.Servlet.CreateAccountServlet.doPost(CreateAccountServlet.java:45) [classes:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0]
现在,我有一个页面,提示用户创建帐户,JSP如下所示。它被称为createAccount.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<% String type = (String) request.getParameter("type");%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<b><font size="6"><center>E-Collaborator</center></font></b>
</head>
<body>
<form name='createAccount' action="CreateAccountServlet" method="post">
    <table>
        <tr>
            <td>Create Account<td>
        </tr>
        <tr>
            <td>Username:</td><td><input type="text" name="username" /></td>
        </tr>
        <tr>
            <td>Password:</td><td><input type="password" name="password" /></td>
        </tr>
        <tr>
            <td>Type:</td>
            <td>
                <select id="acctype" name="acctype">
                <option></option>
                <option>Collaborator</option>
                <option>Consumer</option>
                <option>ServiceProvider</option>
                </select> 
            </td>
        </tr>
    </table>
    <input type="submit" value="Submit"/>
    <input type = "hidden" name="createAccount" value="true">
</form>
</body>
</html>

如何修复此代码,以避免遇到此错误?我的其他servlet使用相同的gotoPage函数,并将其转发给jsp。

尝试将jsp中的getParameter替换为getAttribute

<% String type = (String) request.getAttribute("type");%>

并删除以下行:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

检查

getParameter和getAttribute是不同的方法


尝试将jsp中的getParameter替换为getAttribute

<% String type = (String) request.getAttribute("type");%>

并删除以下行:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

检查

getParameter和getAttribute是不同的方法

在viewpage.jsp上进行jst检查 迭代器引用itr是否已使用迭代器方法分配给ArrayList对象 差不多 itr=al.iterator()

在viewpage.jsp上进行jst检查 迭代器引用itr是否已使用迭代器方法分配给ArrayList对象 差不多
itr=al.iterator()

错误发生在createProfile.jsp中。不要将scriptlet放在JSP中。查看生成的createProfile_jsp.java文件的第74行,了解出了什么问题。gotoPage方法与此异常无关。错误发生在createProfile.jsp中。不要将scriptlet放在JSP中。查看生成的createProfile_jsp.java文件的第74行,了解出了什么问题。gotoPage方法与此异常无关。