2017-06-19 13 views
0

我是JSP-Servlet的新手,我正在爲學生跟蹤器系統創建簡單的Servlet控制器'StudentControllerServlet'。Servlet控制器中的空指針異常

package com.luv2code.web.jdbc; 

import java.io.IOException; 
import java.sql.SQLException; 
import java.util.List; 

import javax.annotation.Resource; 
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 javax.sql.DataSource; 

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

    private StudentDbUtil studentDbUtil; 

    @Resource(name="jdbc/web_student_tracker") 
    private DataSource dataSource; 

    @Override 
    public void init() throws ServletException { 
     // TODO Auto-generated method stub 
     super.init(); 
     try{ 
     studentDbUtil = new StudentDbUtil(dataSource); 
     } 
     catch(Exception ex){ 
      throw new ServletException(ex); 
     } 
    } 



    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String theCommand = request.getParameter("command"); 

     switch (theCommand) { 
     case "LIST": 
      listStudents(request,response); 
      break; 

     case "ADD": 
      try { 
       addStudents(request,response); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      break; 

     default: 
      listStudents(request,response); 
      break; 
     } 

    } 



    private void addStudents(HttpServletRequest request, HttpServletResponse response) throws Exception { 
     // TODO Auto-generated method stub 
     String firstName = request.getParameter("firstName"); 
     String lastName = request.getParameter("lastName"); 
     String email = request.getParameter("email"); 

     Student theStudent = new Student(firstName, lastName, email); 

     StudentDbUtil.addStudent(theStudent); 

     listStudents(request, response); 
    } 



    private void listStudents(HttpServletRequest request, HttpServletResponse response) { 
     try { 
      List<Student> students = studentDbUtil.getStudents(); 
      request.setAttribute("STUDENT_LIST", students); 

      RequestDispatcher dispatcher = request.getRequestDispatcher("/list-students.jsp"); 
      dispatcher.forward(request, response); 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

} 

現在,我得到空指針異常切換部分:下面的代碼中給出。在switch部分,一些名爲'StudentDbUtil'的Java文件正在調用一些方法。對於StudentDBUtil的代碼如下:

package com.luv2code.web.jdbc; 

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 

import javax.sql.DataSource; 

import com.mysql.jdbc.PreparedStatement; 

public class StudentDbUtil { 
    private static DataSource dataSource; 

    public StudentDbUtil(DataSource theDataSource){ 
     dataSource = theDataSource; 

    } 

    public List<Student> getStudents() throws Exception{ 
     List<Student> students = new ArrayList<>(); 

     Connection myConn = null; 
     Statement myStmt = null; 
     ResultSet myRs = null; 

     try{ 
      myConn = dataSource.getConnection(); 
      myStmt = myConn.createStatement(); 
      String query = "select * from Student order by last_name"; 
      myRs = myStmt.executeQuery(query); 
      while(myRs.next()){ 
       int id = myRs.getInt("id"); 
       String firstName = myRs.getString("first_name"); 
       String lastName = myRs.getString("last_name"); 
       String emailID = myRs.getString("email"); 
       Student tempStudent = new Student(id,firstName,lastName,emailID); 
       students.add(tempStudent); 
      } 

      return students; 

     } 
     finally{ 
      close(myConn,myStmt,myRs); 
     } 
    } 

    private static void close(Connection myConn, Statement myStmt, ResultSet myRs) { 
     // TODO Auto-generated method stub 
     try{ 
      if(myConn!=null){ 
       myConn.close(); 
      } 
      if(myStmt!=null){ 
       myStmt.close(); 
      } 
      if(myRs!=null){ 
       myRs.close(); 
      } 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 

     } 
    } 

    public static void addStudent(Student theStudent) throws SQLException { 
     // TODO Auto-generated method stub 
     Connection myConn = null; 
     java.sql.PreparedStatement myPrepState = null; 

     try{ 
      myConn = dataSource.getConnection(); 

      String sql = "insert into student " + 
         "(first_Name, last_Name, email) " + 
         "values(?,?,?)"; 

      myPrepState = myConn.prepareStatement(sql); 

      myPrepState.setString(1, theStudent.getFirstName()); 
      myPrepState.setString(2, theStudent.getLastName()); 
      myPrepState.setString(3, theStudent.getEmail()); 

      myPrepState.execute(); 



     } 
     finally { 
      close(myConn, myPrepState, null); 
     } 
    } 
} 

錯誤開始後,我加入「傳遞addStudent」的方法出現。 任何人都可以幫助我這個空指針異常來自哪裏?我嘗試了自己,但無法弄清楚。

下面是部分堆棧跟蹤:

Jun 19, 2017 4:13:52 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:my_1st_JSP' did not find a matching property. 
Jun 19, 2017 4:13:52 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:tagDemo' did not find a matching property. 
Jun 19, 2017 4:13:52 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:servletDemo' did not find a matching property. 
Jun 19, 2017 4:13:52 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:web_student_tracker' did not find a matching property. 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server version:  Apache Tomcat/8.0.39 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server built:   Nov 9 2016 08:48:39 UTC 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server number:   8.0.39.0 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Name:    Windows 7 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Version:   6.1 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Architecture:   x86 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Java Home:    C:\Program Files\Java\jdk1.8.0_101\jre 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Version:   1.8.0_101-b13 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Vendor:   Oracle Corporation 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_BASE:   E:\study material\udemy jsp-servlet chad\jsp servlet workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_HOME:   C:\Program Files\Apache Software Foundation\Tomcat 8.0 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.base=E:\study material\udemy jsp-servlet chad\jsp servlet workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 8.0 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dwtp.deploy=E:\study material\udemy jsp-servlet chad\jsp servlet workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 8.0\endorsed 
Jun 19, 2017 4:13:52 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dfile.encoding=Cp1252 
Jun 19, 2017 4:13:52 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0_101\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jdk1.8.0_101/bin/../jre/bin/client;C:/Program Files/Java/jdk1.8.0_101/bin/../jre/bin;C:/Program Files/Java/jdk1.8.0_101/bin/../jre/lib/i386;C:\Program Files\Java\jdk1.8.0_101\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Skype\Phone\;C:\Program Files\MySQL\MySQL Utilities 1.6\;E:\softwares\study software\eclipse-jee-neon-RC3-win32\eclipse;;. 
Jun 19, 2017 4:13:52 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-nio-8080"] 
Jun 19, 2017 4:13:53 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
Jun 19, 2017 4:13:53 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-nio-8009"] 
Jun 19, 2017 4:13:53 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
Jun 19, 2017 4:13:53 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 3158 ms 
Jun 19, 2017 4:13:53 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Jun 19, 2017 4:13:53 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/8.0.39 
Jun 19, 2017 4:13:55 PM org.apache.jasper.servlet.TldScanner scanJars 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
Jun 19, 2017 4:13:56 PM org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory getObjectInstance 
WARNING: Name = web_student_tracker Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have set value of "20" for "maxActive" property, which is being ignored. 
Jun 19, 2017 4:13:56 PM org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory getObjectInstance 
WARNING: Name = web_student_tracker Property maxWait is not used in DBCP2 , use maxWaitMillis instead. maxWaitMillis default value is -1. You have set value of "10000" for "maxWait" property, which is being ignored. 
Jun 19, 2017 4:13:56 PM org.apache.jasper.servlet.TldScanner scanJars 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
Jun 19, 2017 4:13:56 PM org.apache.jasper.servlet.TldScanner scanJars 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
Jun 19, 2017 4:13:57 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-nio-8080"] 
Jun 19, 2017 4:13:57 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-nio-8009"] 
Jun 19, 2017 4:13:57 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 3838 ms 
Jun 19, 2017 4:15:21 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [com.luv2code.web.jdbc.StudentControllerServlet] in context with path [/web_student_tracker] threw exception 
java.lang.NullPointerException 
    at com.luv2code.web.jdbc.StudentControllerServlet.doGet(StudentControllerServlet.java:48) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    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:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    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:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

Jun 19, 2017 4:16:37 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [com.luv2code.web.jdbc.StudentControllerServlet] in context with path [/web_student_tracker] threw exception 
java.lang.NullPointerException 
    at com.luv2code.web.jdbc.StudentControllerServlet.doGet(StudentControllerServlet.java:48) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    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:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    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:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

Jun 19, 2017 4:32:01 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [jsp] in context with path [/web_student_tracker] threw exception [<h3>Validation error messages from TagLibraryValidator for c in /list-students.jsp</h3><p>32: Empty var attribute in "c:url" tag.</p>] with root cause 
org.apache.jasper.JasperException: <h3>Validation error messages from TagLibraryValidator for c in /list-students.jsp</h3><p>32: Empty var attribute in "c:url" tag.</p> 
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:55) 
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:277) 
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:75) 
    at org.apache.jasper.compiler.Validator.validateXmlView(Validator.java:1913) 
    at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1859) 
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:336) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363) 
    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.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    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:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

Jun 19, 2017 4:34:10 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [com.luv2code.web.jdbc.StudentControllerServlet] in context with path [/web_student_tracker] threw exception 
java.lang.NullPointerException 
    at com.luv2code.web.jdbc.StudentControllerServlet.doGet(StudentControllerServlet.java:48) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    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:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    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:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

Jun 19, 2017 4:38:26 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [com.luv2code.web.jdbc.StudentControllerServlet] in context with path [/web_student_tracker] threw exception 
java.lang.NullPointerException 
    at com.luv2code.web.jdbc.StudentControllerServlet.doGet(StudentControllerServlet.java:48) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    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:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    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:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
+1

堆棧跟蹤在哪裏? – user7294900

+0

在哪裏可以找到apache文件夾中的堆棧跟蹤? @ user7294900 –

+0

你在哪裏看到空指針異常? – user7294900

回答

1

它未能類StudentControllerServlet線的48線:

switch (theCommand) { 

theCommand爲空,你不要求

發送命令參數
request.getParameter("command"); 

在這種情況下添加默認命令或日誌錯誤

用相關命令調用你的servlet作爲/ StudentControllerServlet?command = LIST

+0

但我在switch語句上方寫了'getparameter(「command」)''。你可以檢查上面的StudentControllerServlet。 –

+0

但你沒有發送參數命令。應該類似於/ StudentControllerServlet?command = abc。你使用struts嗎? – user7294900

+0

沒有。 eclipse中的簡單JSP。但我明白你的觀點。但我很困惑,因爲我所遵循的視頻教程與我做的完全一樣,他的代碼運行良好。我給了我錯誤。即使他沒有預先設定任何參數。 –