简体   繁体   English

Servlet.service()抛出NullPointerException

[英]Servlet.service() throwing NullPointerException

I'm honestly baffled by why this is throwing this particular exception. 老实说,我对此感到困惑,为什么这会引发这个特殊异常。 If I have the servlet direct to another JSP, it works fine. 如果我有直接指向另一个JSP的servlet,它就可以正常工作。 Here is the stack trace of the error I am getting 这是我得到的错误的堆栈跟踪

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]

Right now, I have a page where a user is prompted to create an account, the JSP looks like this. 现在,我有一个页面,提示用户创建一个帐户,JSP如下所示。 It is called createAccount.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>

It is forwarded to this Servlet, where the error is being thrown in the gotoPage method, on the dispatcher.forward command. 它被转发到该Servlet,在dispatcher.forward命令上,该错误在gotoPage方法中引发错误。

package ecollaborator.Servlet;

import java.io.IOException;

import javax.ejb.EJB;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ecollaborator.Entity.*;
import ecollaborator.Session.*;

@WebServlet("/CreateAccountServlet")
public class CreateAccountServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @EJB
    private Admin admin;

    public CreateAccountServlet() {
        super();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        boolean isForwarded = false;

        String createAccount = request.getParameter("createAccount");
        if(createAccount != null && createAccount.equals("true"))
        {

            String username = (String)request.getParameter("username");
            String password = (String)request.getParameter("password");
            String type = (String)request.getParameter("acctype");

            User u = new User(username,password,type);
            admin.createAccount(u);


            if(!isForwarded)
            {
                request.setAttribute("type", type);
                isForwarded = gotoPage("/createProfile.jsp", request, response);
            }
        }

    }

    private boolean gotoPage(String address, HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
        {
                RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(address);
                dispatcher.forward(request, response);
                return true;
        }

}

How can I fix this code, so that I can avoid coming across this error? 如何修复此代码,以便避免遇到此错误? My other servlets use the same gotoPage function and forward to JSPs just fine. 我的其他servlet使用相同的gotoPage函数并转发到JSP。

try to replace getParameter to getAttribute in jsp 尝试将getParameter替换为jsp中的getAttribute

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

and also remove line: 并删除以下行:

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

and check 并检查

getParameter and getAttribute are different methods getParameter和getAttribute是不同的方法

http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/api/javax/servlet/ServletRequest.html http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/api/javax/servlet/ServletRequest.html

在viewpage.jsp jst上,检查是否使用Iterator方法将ArrayList对象与Iterator引用itr关联。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Servlet [Jersey REST服务]的Servlet.service()java.lang.NullPointerException - Servlet.service() for servlet [Jersey REST Service] java.lang.NullPointerException servlet的标准包装器值[register]:servlet.service()抛出异常java.lang.nullpointerexception; - standard wrapper value[register]:servlet.service() for servlet threw exception java.lang.nullpointerexception; 为什么servlet jsp的Servlet.service()抛出异常java.lang.NullPointerException? - Why Servlet.service() for servlet jsp threw exception java.lang.NullPointerException? Servlet默认的Servlet.service()抛出异常java.lang.NullPointerException - Servlet.service() for servlet default threw exception java.lang.NullPointerException Struts 2:SEVERE:Servlet默认的Servlet.service()抛出异常java.lang.NullPointerException - Struts 2: SEVERE: Servlet.service() for servlet default threw exception java.lang.NullPointerException 严重:Servlet [package]的Servlet.service()在路径[/ portal]的上下文中引发了异常java.lang.NullPointerException - SEVERE: Servlet.service() for servlet [package] in context with path [/portal] threw exception java.lang.NullPointerException 警告:StandardWrapperValve [jsp]:servlet jsp的Servlet.service()抛出异常java.lang.NullPointerException glassfish - WARNING: StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException glassfish servlet.service 错误,classNotFoundException - servlet.service error, classNotFoundException Servlet.service()抛出ClassCastException - Servlet.service() throws ClassCastException servlet [jsp] 的 Servlet.service() 抛出异常 - Servlet.service() for servlet [jsp] threw exception
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM