我的简单 web 应用程序如下: 我有一个 JSP 表单 ( MyForm.JSP),它接受用户输入并将其传递给我的第一个 servlet ( "/myfirstservlet")。
这个 servlet 处理用户输入值的 SQL 插入到我的Fruits表中,然后将用户重定向到我的结果 servlet ( "/results")。
我的结果 servlet 然后检查 an"ADD"参数,如果“真”(即等于"success"),它最终将用户重定向到我的结果 JSP(Results.JSP),它存储在路径中: WEB-INF/MyFolder/Results.jsp。
我的 JSP 表单 ( MyForm.JSP) 也存储在路径中: WEB-INF/MyFolder/MyForm.jsp
我这样做是为了防止用户通过单击 Results JSP 页面上的刷新按钮重新提交表单,从而避免对之前刚刚输入到数据库中的相同数据进行多次输入。
我现在的问题是:如何防止点击提交按钮,用户多的窗体上的时间(MyForm.JSP),从而防止相同数据的多个行越来越进入我的数据库WITHOUT使用JavaScript或JQuery的?
基本上,我想在我的服务器而不是客户端验证表单只提交了一次。
我的 JSP 表单 ( MyForm.JSP):
<form action="myfirstservlet" do="POST">
<input type="text" name="fruit"><br>
<input type="text" name="color"><br>
<input type="submit" value="Submit">
</form>
我的第一个 servlet ( "/myfirstservlet"):
protected void doPost(...){
String fruit = request.getParameter("fruit");
String color = request.getParameter("color");
String sql = "INSERT INTO fruits (fruit, color) VALUES" + "(\"" + fruit + "\", \"" + color + "\");";
utilitySQL.sqlInsert(sql); // My utility class that handles sql inserts
response.sendRedirect("results?ADD=SUCCESS");
}
我的结果 servlet ( "/results"):
protected void doPost(...){
response.setContentType("text/html");
if (request.getParameter("ADD").equals("SUCCESS"))
request.getRequestDispatcher("WEB-INF/MyFolder/Results.jsp").forward(request, response);
}
我的结果 JSP ( Results.JSP):
<body>
<h1>Results JSP</h1>
//Reads data from MySQL database and prints it as an Array List.
</body>
芜湖不芜
相关分类