我有一个jsp页面,在填写该页面后,它会转到另一个只读的报告页面。在第一个表单上单击提交,它将转到第二个报表页面并将数据保存到数据库中。我在报告第二个表单上有后退按钮,或者我刷新页面报表,它在数据库中保存相同字段的副本。
我在这里做错了什么?
答案 0 :(得分:4)
有很多方法可以解决这个问题
会话令牌 使用会话令牌来确定是否已经处理了导致初始提交的表单。
<强>重定向强> 使用重定向而不是直接从执行您不想复制的操作的servlet转发到视图。
例如:假设在插入行之后,您希望显示一个显示该行所代表的实体的页面。在插入servlet中,您将执行SQL插入操作,但之后您不会直接进入显示页面。您将重定向到将获得插入结果的servlet,然后该servlet转发到显示页面。 这样,刷新后,所有发生的事情都是servlet重新获取记录并显示它。不会发生多次插入。