2016-11-21 10 views
-1

jspフォームからデータを追加しようとすると、URLが変更されて何も起こりません。私はweb.xmlファイルをすべてチェックしました。OKです...送信ボタンを押すと、url =/servletの名前で新しい空白ページに移動します。私は同じ接続を使用して手動でデータを挿入しようとしてもうまく動作します。サーブレットを通じてjspフォームデータをデータベースに挿入する

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> 

サーブレットファイル:

必要な場合
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; 
    } 
} 
+0

Webサーバーのエラーログで興味深いものは何ですか?また、 'catch(Exception)'を削除し、 'throws'節を通して例外を伝播させることをお勧めします。 –

答えて

0

<input>値があるためにname属性を持っている必要がありますPOSTまたはGET HTTPリクエストでサーバーに送信されます。これにより、すべてのrequest.getParameter("...")行はnullを返し、これらの値を初めて使用しようとするとNullPointerExceptionで失敗します。

@LittleSanti氏によると、SystemOut/SystemErrログには例外が発生しているかどうかチェックし、自分で例外を管理する場合はcatchブロックを有効に活用する必要があります。

+0

ありがとうございましたが、私はすでにそれを解決しました...問題は、名前タグを忘れてしまったことです>とにかく仲間に感謝!!乾杯。 –