通过 servlet 插入数据库后,我将页面重定向到“主页”页面。但是,当我刷新时,仍然会传递数据,并且会出现数据库中的重复项。
系统流程是这样的:我加载一个列出项目的页面,当我单击一个项目时,我更改页面中的一个 div 以显示一个文本区域以供评论。当我单击提交评论时,这些值被插入到数据库中,并且页面被重定向到没有项目列表的页面。但是,当我刷新时,数据仍然传递。
有谁知道我如何才能真正删除数据或在刷新时不传递数据?谢谢!
这些症状表明您实际上是在将请求转发到主 JSP,而不是重定向。在 post 之后进行真正的重定向,这个问题根本不应该发生。
因此,请确保您确实在执行重定向,如下所示
response.sendRedirect(request.getContextPath() + "/home.jsp");
因此不是如下的前锋
request.getRequestDispatcher("/home.jsp").forward(request, response);
最可能的情况是在提交第一个请求后,浏览器中的 url 发生了变化,并指示为 servlet-URL。因此,当您点击刷新按钮时,它直接调用 servlet,因此再次执行相同的过程。例如 -
您当前的浏览器网址是 -- www.myurl.com/mypage.jsp
请求 url 是 www.myurl.com/mypage.action(指示 servlet)
提交第一个请求后,浏览器中的 url 将是 www.myurl.com/mypage.action
因此,每当您刷新页面时,它都会直接调用 servlet。
解决方案是 - 完成请求后在 servlet 中再次重定向 jsp 页面。