无法通过servlet将jsp表单数据插入数据库

时间:2016-11-21 16:29:58

标签: java jsp servlets

每当我尝试从jsp表单添加数据时,url会发生变化,然后什么都不会发生。我检查了web.xml文件,一切正常......点击提交按钮后,它会转到带有url = / servlet名称的新空白页面。我尝试使用相同的连接手动插入数据,它工作正常。

jsp表格:

<form action="add_patient" method="post">
    <input type="text" id="fname" required> <br /> 
    <input type="text" id="mname"> <br /> 
    <input type="text" id="lname" required> <br />
    <input type="text" id="address" required> <br /> 
    <input type="number" id="contact" required> <br />
    <select id="gender" required>
        <option value="">Choose here</option>
        <option value="male">Male</option>
        <option value="female">Female</option>
        <option value="other">Other</option>
    </select>
    <input type="date" id="dob" required> <br /> 
    <input type="number" id="alloted"> <br /> 
    <input type="text" id="problem" required> <br /> 
    <input type="submit" value="Add Patient"> 
    <input type="reset" value="Reset Input">
</form>

Servlet文件:

public class add_patient extends HttpServlet
{
    private Connection con=null;

    private PreparedStatement stmt=null;

    private final ResultSet rs=null;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException,
        IOException,
        ParseException,
        SQLException
    {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out=response.getWriter())
        {

            // add_patients ap = new add_patients();

            String fname=request.getParameter("fname");
            String mname=request.getParameter("mname");
            String lname=request.getParameter("lname");
            String address=request.getParameter("address");
            int contact=Integer.parseInt(request.getParameter("contact"));
            String gender=request.getParameter("gender");
            String dob=request.getParameter("dob");
            int alloted=Integer.parseInt(request.getParameter("alloted"));
            String problem=request.getParameter("problem");

            out.println(address);

            try
            {
                dbconnection db=new dbconnection();
                db.getConnection();

                con=dbconnection.getConnection();
                stmt=(PreparedStatement)con.createStatement();

                String sql="INSERT INTO patient (fname,mname, lname, address, contact, gender, dob, room_no, problem)" + "            VALUES (' " + fname + " ', ' " + mname + " ', '" + lname + "', '" + address + "', '" + contact + "', '" + gender + "', '" + dob + "', '" + alloted + "', '" + problem + "' )";

                stmt.executeUpdate(sql);
                if (stmt.executeUpdate(sql) > 0)
                {

                    request.getSession().setAttribute("error", "sorry the operation failed!please try again.");
                    request.getRequestDispatcher("add_patient.jsp").forward(request, response);
                }
                else
                {
                    request.getRequestDispatcher("add_patient.jsp").forward(request, response);
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            con.close();
        }
    }
}

如果需要..数据库连接:

public class dbconnection
{
    private static String url="jdbc:mysql://localhost/HMS";

    private static String driverName="com.mysql.jdbc.Driver";

    private static String username="root";

    private static String password="";

    private static Connection con;

    public static Connection getConnection()
    {
        try
        {
            Class.forName(driverName);
            try
            {
                con=DriverManager.getConnection(url, username, password);
            }
            catch (SQLException ex)
            {
                // log an exception. fro example:
                ex.printStackTrace();
                System.out.println("Failed to create the database connection.");
            }
        }
        catch (ClassNotFoundException ex)
        {
            ex.printStackTrace();
            // log an exception. for example:
            System.out.println("Driver not found.");
        }
        return con;
    }
}

1 个答案:

答案 0 :(得分:0)

<input>值需要具有name属性才能在POST或GET HTTP请求中发送到服务器。这应该会导致所有request.getParameter("...")行都返回null,并在您第一次尝试使用这些值时失败并显示NullPointerException

正如@LittleSanti所说,如果您打算自己管理这些异常,则应检查SystemOut / SystemErr日志中是否存在任何抛出的异常,并充分利用catch块。