首页 > 解决方案 > 使用servelt java将html日期值存储到mysql数据库时出现NullPointerException

问题描述

我有这个html表格date input type

<form method="POST" action="FillTanks" onsubmit="return(showAlert());">
                <div class="container">                    
                    <div class="row">
                        <div class="col-4">
                        </div>                                                            
                            <div class="form-group md-form">                                    
                                <i class="fa fa-calendar prefix grey-text"></i>
                                <input style="color: gray;" type="date" id="datedd" class="form-control">                          
                            </div>
                            <div class="text-center">                                    
                                <button type="submit" id="btn-fill" class="btn btn-blue btn-lg"><strong>Fill</strong></button>                                    
                            </div>
                        </div>
                        <div class="col-4">  
                        </div>
                    </div>
                </div>
            </form>

这是我的servlet

public class FillTanks extends HttpServlet {

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String fuelType = request.getParameter("fueltype");
    String liters = request.getParameter("liters");
    String date = request.getParameter("datedd");

    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Vehicle", "root", "");
        PreparedStatement ps = con.prepareStatement("INSERT INTO fuel(fueltype,liters,date) VALUES(?,?,?)");

        Date date2 = new SimpleDateFormat("MM/dd/yyyy").parse(date);

        ps.setString(1, fuelType);
        ps.setString(2, liters);
        ps.setDate(3, (java.sql.Date) date2);

        int i = ps.executeUpdate();

        if (i > 0) {
            System.out.println("Success");
        } else {
            System.out.println("not success");
        }

    } catch (ClassNotFoundException ex) {
        Logger.getLogger(FillTanks.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(FillTanks.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ParseException ex) {
        Logger.getLogger(FillTanks.class.getName()).log(Level.SEVERE, null, ex);
    }
}

但是每次我执行项目时,它都会给我这个错误。

> Warning:   StandardWrapperValve[FillTanks]: Servlet.service() for servlet FillTanks threw exception
java.lang.NullPointerException
    at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1439)
    at java.text.DateFormat.parse(DateFormat.java:364)
    at FillTanks.doPost(FillTanks.java:37)

date在创建与此 servlet 相关的数据库表时使用了数据类型。

任何人都可以帮我解决我的实现有什么问题吗?

标签: java

解决方案


推荐阅读