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