我有一个名为“插入”的 servlet,可将数据插入数据库。
在这个 servlet 的末尾,我有一个 getRequestDispatcher
,它将用户发送到名为“outcome.jsp”的页面。我的 servlet 还使用 request.setAttribute("Message", "bla bla bla");
在 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/