在 jsp 中停止提交页面重新加载到 DB 之前的表单数据
stop submitting of previous data of form on page reload to DB in jsp
我完成了以下编码
ContactUs.jsp
<form action="contact1.jsp" method="post" id="contact_form">
<div class="name">
<label for="name"></label> <input type="text" placeholder="My name is" name="name" id="name_input" required>
</div>
<div class="email">
<label for="email"></label> <input type="email"
placeholder="My e-mail is" name="email" id="email_input" required>
</div>
<div class="telephone">
<label for="name"></label>
<input type="text" placeholder="My number is" id="telephone_input" name="telephone" title="lenght of number should be 10 digits for valid number" pattern="[1-9]{1}[0-9]{9}" required/>
</div>
<div class="message">
<label for="message"></label>
<textarea name="message" placeholder="I'd like to chat about"
id="message_input" cols="30" rows="5" required></textarea>
</div>
<div class="submit">
<input type="submit" value="Send Message" id="form_button" />
</div>
</form>
contact1.jsp 的代码是
String name=request.getParameter("name");
String email=request.getParameter("email");
String telephone=request.getParameter("telephone");
String message=request.getParameter("message");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/cinushi_university", "CinthiyaSingh", "Cinthiya@098");
Statement st=con.createStatement();
ResultSet rs;
int i=st.executeUpdate("insert into contact values('"+ name + "','"+ email + "','"+ telephone + "','"+ message + "');");
if (i > 0) {
request.getSession().setAttribute("Message", "Sent Successfully!");
request.getRequestDispatcher("ContactUs.jsp").forward(request, response);
}
else{
request.getSession().setAttribute("Message", "Incomplete Process!");
request.getRequestDispatcher("ContactUs.jsp").forward(request, response);
}
//close connection
%>
将数据添加到表单并提交后,效果很好,但是 post 在同一页面上,当我单击刷新时它会重新提交数据,我希望清除之前提交的数据当我将响应重定向到相同的 ContactUs.jsp 时,如果可能的话请帮忙。
您可以使用 java 脚本 History.replaceState() 函数来修复此问题。
History.replaceState()方法修改当前的历史条目,将其替换为方法参数中传入的stateObj、title和URL。
在jsp页面添加此脚本-
<script>
if ( window.history.replaceState ) {
window.history.replaceState( null, null, window.location.href );
}
</script>
或者,
如果没有提交数据,则只在 table 'user' 中插入数据。您必须检查唯一列。
我完成了以下编码 ContactUs.jsp
<form action="contact1.jsp" method="post" id="contact_form">
<div class="name">
<label for="name"></label> <input type="text" placeholder="My name is" name="name" id="name_input" required>
</div>
<div class="email">
<label for="email"></label> <input type="email"
placeholder="My e-mail is" name="email" id="email_input" required>
</div>
<div class="telephone">
<label for="name"></label>
<input type="text" placeholder="My number is" id="telephone_input" name="telephone" title="lenght of number should be 10 digits for valid number" pattern="[1-9]{1}[0-9]{9}" required/>
</div>
<div class="message">
<label for="message"></label>
<textarea name="message" placeholder="I'd like to chat about"
id="message_input" cols="30" rows="5" required></textarea>
</div>
<div class="submit">
<input type="submit" value="Send Message" id="form_button" />
</div>
</form>
contact1.jsp 的代码是
String name=request.getParameter("name");
String email=request.getParameter("email");
String telephone=request.getParameter("telephone");
String message=request.getParameter("message");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/cinushi_university", "CinthiyaSingh", "Cinthiya@098");
Statement st=con.createStatement();
ResultSet rs;
int i=st.executeUpdate("insert into contact values('"+ name + "','"+ email + "','"+ telephone + "','"+ message + "');");
if (i > 0) {
request.getSession().setAttribute("Message", "Sent Successfully!");
request.getRequestDispatcher("ContactUs.jsp").forward(request, response);
}
else{
request.getSession().setAttribute("Message", "Incomplete Process!");
request.getRequestDispatcher("ContactUs.jsp").forward(request, response);
}
//close connection
%>
将数据添加到表单并提交后,效果很好,但是 post 在同一页面上,当我单击刷新时它会重新提交数据,我希望清除之前提交的数据当我将响应重定向到相同的 ContactUs.jsp 时,如果可能的话请帮忙。
您可以使用 java 脚本 History.replaceState() 函数来修复此问题。
History.replaceState()方法修改当前的历史条目,将其替换为方法参数中传入的stateObj、title和URL。
在jsp页面添加此脚本-
<script>
if ( window.history.replaceState ) {
window.history.replaceState( null, null, window.location.href );
}
</script>
或者, 如果没有提交数据,则只在 table 'user' 中插入数据。您必须检查唯一列。