java - response.sendRedirect 与 getRequestDispatcher

标签 java jsp servlets

我有一个名为“插入”的 servlet,可将数据插入数据库。

在这个 servlet 的末尾,我有一个 getRequestDispatcher,它将用户发送到名为“outcome.jsp”的页面。我的 servlet 还使用 request.setAttribute("Message", "bla bla bla");

向 outcome.jsp 发送了一个变量

在 outcome.jsp 中我有一个 request.getAttribute("Message"); 并且我向用户显示了 Message 的值。

在浏览器 url 上总是有我的 servlet ( http://www.site.com/insert ) 的 url,因此用户可以使用浏览器的重新加载按钮并插入 1000000000 次。

我尝试使用 response.sendRedirect 但我不能使用 request.setAttribute,我需要它来显示有关插入结果的消息

如何避免我的 servlet 的 url 显示在浏览器 url 上,以防止用户使用重新加载按钮进行无限插入?

谢谢

最佳答案

无论您使用这两种方法中的哪一种,您仍然会遇到相同的问题(即使在 sendRedirect() 的情况下,通过捕获和再现用户的请求 header )。双重插入的检查应单独进行。

通常,如果您想禁用来自客户端的重复输入,您可以创建一个 token 并将其发送给客户端。当客户端想要插入时,您可以检查此 token 是否有效,然后执行插入(然后从有效列表中删除 token )。

这只是众多方法中的一种......

希望对你有帮助

关于java - response.sendRedirect 与 getRequestDispatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20264714/

相关文章:

java - c :url tag includes jsession id query string

java - 不使用RequestDispatcher forward和Servlet Annotation

java HttpServletResponse 文件大小超过 8k

java - 为什么 Heroku 尝试运行 newrelic-agent.jar 而不是我的应用程序?

java - 如何从接口(interface)生成 JAVA RMI stub 和骨架?

java - 动态jasper报告标题图片

java - 如何写 <c :if> - jSTL tag - comparing map key with struts formbean element

java - 从 servlet 和 jsp 打印到 txt 文件

java - 如何从 Java servlet 运行外部命令?

java - apache http 客户端 org.apache.http.NoHttpResponseException : The target server failed to respond