刷新 JSP 表单会重新提交数据

Refreshing a JSP form resubmits the data

我有一个名为 patient.jsp 的 jsp 页面,其中有一个 Form 弹出窗口。此表单使用 post 方法提交。 一旦此表单到达 servlet,就会发生类似下面的事情。

request.setAttribute("id",id);
RequestDispatcher dispatch = getServletContect().getRequestDispatcher("/patient.jsp");
dispatch.forward(request,response);

有个大问题。一旦转发回 patient.jsp,如果用户刷新网页,他之前输入表单的所有内容将被重新提交并保存在数据库中。

我们使用了RequestDispatcher,因为我们必须从请求范围传递一个属性。知道如何解决这个问题吗?

首先你应该重定向而不是转发:

response.sendRedirect("patient.jsp");

确保相对路径正确。

从这里你有两个选择:

  1. session中设置属性,而不是在请求中设置,那么您可以在jsp中获取它。当然你需要使用这个来处理并行请求,所以每次属性的名称应该是唯一的。
  2. 将属性作为 http get 参数发送(如果它是可序列化的):response.sendRedirect("patient.jsp?id=273");