【问题标题】:Requestdispatcher Nullpointer Exception请求调度程序空指针异常
【发布时间】:2023-03-08 18:38:01
【问题描述】:

我有以下 Servlet 代码:

@WebServlet("/Login")
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
public String lang = "";   
/**
 * @see HttpServlet#HttpServlet()
 */
public Login() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String lcLog = request.getParameter("LogType").toUpperCase();
    switch(lcLog)
    {
        case "LOGIN":
            try {
                boolean llErfolg = doLogin(request.getParameter("user").toUpperCase(),request.getParameter("pw"));
                if(llErfolg==true)
                {
                    System.out.println("Login");
                    HttpSession session = request.getSession();
                    session.setAttribute("username", request.getParameter("user").toUpperCase());
                    session.setAttribute("Language", lang);
                    request.getRequestDispatcher("/WEB-INF/jsp/view/Kacheln_Test.jsp").forward(request, response);
                }
                else
                {
                    System.out.println("Login Failed");
                    request.setAttribute("LogInFailed", true);
                    request.getRequestDispatcher("/WEB-INF/jsp/view/Startseite.jsp").forward(request, response);
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            break;
        case "LOGOUT":
            System.out.println("Logout");
            HttpSession session = request.getSession();
            session.invalidate();
            request.getRequestDispatcher("/WEB-INF/jsp/view/Startseite.jsp").forward(request, response);
            break;
        default:
            System.out.println("Warum?");
            break;
    }
}

到目前为止一切正常,但最近每当我遇到“LogOut”的情况时,我都会在 Dispatcher 收到 Nullpointer 异常,我完全不知道为什么,因为它在几天前就工作了。

我有关注 Kacheln_Test.jsp 文件,可能是问题的根源,因为当我点击“Kunden”时会发生同样的错误

<c:url var="post_url2" value="/Login" />
<form id="LogOut" method="POST" action="${post_url2}" name="LogOut">
    <input type="hidden" id="LogType" name="LogType" value = "" />
    <fmt:message key="Kacheln.Label.Angemeldetals"/>&emsp; <%=session.getAttribute("username") %>,
    <a href="javascript:{}" onclick="ausloggen_setzen('LogOut');"><fmt:message key="Kacheln.Label.LogOut"/> </a>
</form>

同样的错误

<div class="image-container">
    <div class="frame">
       <input class="live-slide"  type ="image" src="Images/Kunden.png" onClick="return setValue('Mail')" />
    </div>
    <div class="image-overlay" onclick="return setValue('Kunden')">
        <fmt:message key="Kacheln.Button.Kunden"/>
    </div>
</div>

这是调用的函数

<script>
    function ausloggen_setzen(lcTest)
    {
        document.getElementById('LogType').value = lcTest;
        document.getElementById('LogOut').submit();
        return true;
    }
    function setValue(lcArt)
    {
        document.getElementById("OF").value = lcArt;
        document.getElementById("OFform").submit();
        return true;
    }
</script>

希望有人能帮忙,我认为这只是一件小事,但我不知道原因

错误堆栈跟踪:

Jul 12, 2017 8:46:22 AM org.apache.catalina.core.StandardWrapperValve    
invoke
SCHWERWIEGEND: Servlet.service() for servlet [Login] in context with path
 [/Tuev_Test] threw exception [org.apache.jasper.JasperException:   
java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at     org.apache.jsp.WEB_002dINF.jsp.view.Menu_jsp._jspService(Menu_jsp.java:251)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:716)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:523)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:885)
at org.apache.jsp.WEB_002dINF.jsp.view.Startseite_jsp._jspService(Startseite_jsp.java:136)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:716)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
at Login.doPost(Login.java:73)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:616)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

您好,

凯文

【问题讨论】:

  • 发布你的 Nullpointer 异常堆栈跟踪
  • 我添加了堆栈跟踪
  • 你的 Startseite.jsp 在哪里,它可能有问题包含
  • 为什么会有问题呢?在程序开始时,jsp 被调用并正常打开,但是当我点击 Kacheln_Test.jsp 上的“Ausloggen”时,就会发生错误,那里与网站开始时应该有什么不同?
  • 顺便说一句,你为什么要调用 session.invalidate();之前呢?可以去掉吗?

标签: jsp servlets request requestdispatcher


【解决方案1】:

我发现了我的两个问题,一步一步仔细检查代码,我看到在“Kunden”和“Startseite”两个包含的jsp中都有一个request.getAttribute()。在我的两种情况下,都存在空指针异常,我忘记在调用 jsp 之前设置属性。

但因为一开始只是有一个 Nullpointerexception,我变得不确定,所以我完全监督了明显的原因

感谢您的回答,并为我的盲目和愚蠢感到抱歉:(

您好,

凯文

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    相关资源
    最近更新 更多