2017-07-12 29 views
0

我有以下servlet代碼:RequestDispatcher的空指針異常

@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; 
    } 
} 

一切工作正常,直到如今,但最近每當我得到這樣的情況下,「註銷」,我在調度程序得到一個空指針異常,我絕對沒有想法爲什麼,因爲它在幾天前工作。

我有以下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) 

問候,

凱文

+1

發表您的空指針異常堆棧跟蹤 – user7294900

+0

我加入了堆棧跟蹤 –

+0

哪裏是你的Startseite.jsp它可能有問題包括: – user7294900

回答

0

我發現我的兩個問題,通過代碼一步仔細去一步一步,我看到在包含jsp的「Kunden」和「Startseite」中都有一個request.getAttribute()。在我的兩個案例中,在發生nullpointerexception的情況下,我忘記了在調用jsp之前設置屬性。

而是因爲那裏只是起初一個NullPointerException異常,我變得不確定,讓我完全監督明顯的原因

感謝您的答案和我的失明和愚蠢:(

問候對不起,

凱文