Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
servlet中的java.lang.NullPointerException_Java_Servlets_Nullpointerexception - Fatal编程技术网

servlet中的java.lang.NullPointerException

servlet中的java.lang.NullPointerException,java,servlets,nullpointerexception,Java,Servlets,Nullpointerexception,当我运行servlet时,我在Tomcat控制台中得到了这个错误。我想我得看看我的SimpleDateformat,但有人能看出这里出了什么问题吗?我的代码编译得很好,所以我有点怀疑应该注意什么: 错误视频: 祝大家度过愉快的一天/晚上 朱莉 我的Servlet: package WorkPackage; import java.io.*; import java.sql.*; import java.text.SimpleDateFormat; import javax.servlet.*

当我运行servlet时,我在Tomcat控制台中得到了这个错误。我想我得看看我的SimpleDateformat,但有人能看出这里出了什么问题吗?我的代码编译得很好,所以我有点怀疑应该注意什么:

错误视频:

祝大家度过愉快的一天/晚上 朱莉

我的Servlet:

package WorkPackage;

import java.io.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/getHoursSQL")
public class getHoursSQL extends HttpServlet{

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest req, HttpServletResponse res) 
        throws ServletException, IOException{

        String connectionURL = "jdbc:mysql://localhost/NekiWork";
        Connection connection=null;

        try {
            //Load database driver
            Class.forName("com.mysql.jdbc.Driver");
            //Connection to the database
            connection = DriverManager.getConnection(connectionURL, "root", ""); 
            //Getting the data from database

            String sql = "SELECT *, (Day_hours + (Day_minutes / 60)) AS Allday_hours FROM Workdata "
                    + "WHERE startdate = ? AND endDate = ? ";
            PreparedStatement pst = connection.prepareStatement(sql);

            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

            java.util.Date util_StartDate = format.parse( req.getParameter("startDate") );
            java.sql.Date sql_StartDate = new java.sql.Date( util_StartDate.getTime() );

            java.util.Date util_EndDate = format.parse( req.getParameter("endDate") );
            java.sql.Date sql_EndDate = new java.sql.Date( util_EndDate.getTime() );
                pst.setDate( 1, sql_StartDate );
                pst.setDate(2, sql_EndDate );

            //Show the result from database
                ResultSet rs = pst.executeQuery();

            float Allday_hours_sum = 0;
                while (rs.next()){                                      
                    Allday_hours_sum += rs.getFloat("Allday_hours"); 

                }   
                res.setContentType("text/html;charset=UTF-8");          
                res.getWriter().print(Allday_hours_sum); 

                pst.close();

        }
        catch(ClassNotFoundException e){

            System.out.println("Couldn't load database driver: " + e.getMessage());
        }
        catch(SQLException e){
            System.out.println("SQLException caught: " + e.getMessage());
        }
        catch (Exception e){
            e.printStackTrace();
        }
        finally {

            try {
                if (connection != null) connection.close();
            }
            catch (SQLException ignored){
                System.out.println(ignored);
            }
        }
    }
}
Javascript:

    <form id="myForm">
        <input type="text" id="startDate"/>                     
        <input type="text" id="endDate"/>
    </form>
    <div id="startresult"></div>
    <div id="endresult"></div>
    <script>

    $(function(){
        $("#startDate").datepicker({
            dateFormat: 'yy-mm-dd',
            onSelect: function(dateText,inst){
                $('.selected-date').html(dateText);
                 var JSON = $('#myForm').serializeArray(); //you forgot to create JSON data
                $.ajax({
                      url: "../getHoursSQL",
                      type: "post",
                      data: JSON,
                      success: function(data){
                          start: $("#startDate").val();
                          alert("success");
                          $("#startresult").html(data);

                      },
                      error:function(){
                          alert("failure");
                          $("#startresult").html('there is error while submit');
                      }  
                    });
            }
        });
    });

    $(function(){
        $("#endDate").datepicker({
            dateFormat: 'yy-mm-dd',
            onSelect: function(dateText,inst){
                $('.selected-date').html(dateText);
                 var JSON = $('#myForm').serializeArray(); //you forgot to create JSON data
                $.ajax({
                      url: "../getHoursSQL",
                      type: "post",
                      data: JSON,
                      success: function(data){
                          start: $("#endDate").val();
                          alert("success");
                          $("#startresult").html(data);

                      },
                      error:function(){
                          alert("failure");
                          $("#startresult").html('there is error while submit');
                      }  
                    });
            }
        });
    });

</script>

我认为没有带“startDate”(这使得req.getParameter(“startDate”)返回null)的参数会导致SimpleDataFormat抛出NullPointerException,如:

<form id="myForm">
        <input type="text" id="startDate"/>                     
        <input type="text" id="endDate"/>
</form>


测试的应用程序外观

req.getParameter(“startDate”)
可能为空,请在控制台中打印检查。添加服务器端验证,这样您就不需要处理
null
情况您在哪里创建了JSON对象?您在AJAX
data:JSON,
Hello中进行了定义。谢谢你的快速回放。我试图从表单和javascript中获取的startDate和endDate。我刚刚编辑了我的答案。你现在能看到更多的东西吗?你好。非常感谢你的回答。startDate和endDate应该在my:中,在javascript中?它肯定应该是输入发送到Servlet的表单。我不知道你是怎么处理你的用户界面的,但是,将表单中的值提交到Servlet就需要Javascript。我将Javascript作为日历处理,如下所示:您确定日期的输入元素在表单中吗?它们应该:@Julie24 check updatedanswer@Julie24您尚未将表单id指定给序列化数组(“endDate”)endDate不是表单id。。检查我的更新答案有html表单与id@Julie24你的意思是仍然
NullPointerException
进入控制台?我刚刚制作了一个简短的视频,介绍了我运行代码时发生的事情,如果这对我的问题有帮助的话。是的,我会尽力找出答案。我将在5分钟后再次在这里写:onSelect:function(dateText,inst){$('.selected date').html(dateText);var JSON=$('#myForm').serializeArray();Console.log(JSON);$.ajax({
<form id="myForm">
        <input type="text" id="startDate"/>                     
        <input type="text" id="endDate"/>
</form>
$(function(){
    $("#startDate").datepicker({
        dateFormat: 'yy-mm-dd',
        onSelect: function(dateText,inst){
            $('.selected-date').html(dateText);
             var jsonStr = $('#myForm').serializeArray(); //you forgot to create JSON data
            $.ajax({
                  url: "../getHoursSQL",
                  type: "post",
                  data: jsonStr,
                  success: function(data){
                      start: $("#startDate").val();                          
                      $("#startresult").html(data);
                      alert("success");
                  },
                  error:function(){
                      alert("failure");
                      $("#startresult").html('there is error while submit');
                  }  
                });
        }
    });
});