![](/img/trans.png)
[英]request.getRequestDispatcher and response.sendRedirect don't work
[英]response.sendRedirect Vs getRequestDispatcher
我有一个Servlet,称为“插入”,可将数据插入db。
在该Servlet的末尾,我有一个getRequestDispatcher
,它将用户发送到名为“ outcome.jsp”的页面。 我的servlet还使用request.setAttribute("Message", "bla bla bla");
将变量发送到result.jsp request.setAttribute("Message", "bla bla bla");
在result.jsp中,我有一个request.getAttribute("Message");
我向用户展示Message的价值。
在浏览器url上始终有我的servlet的URL( http://www.site.com/insert ),因此用户可以使用浏览器的reload按钮并进行插入1000000000次。
我尝试使用response.sendRedirect但不能使用request.setAttribute
,我需要它来显示有关插入结果的消息
如何避免在浏览器的网址上显示我的servlet的网址,以免用户使用重载按钮进行无限插入?
谢谢
如果使用response.sendRedirect(),将启动一个新请求,因此您将无法访问为上一个请求设置的数据,以显示必须使用query参数的数据,该数据将附加到URl
response.sendRedirect("/outcome.jsp?Message=bla bla")
在您的jsp页面中,您需要阅读为
request.getParameter("Message")
使用这两种方法中的哪一种仍然会遇到相同的问题(即使在sendRedirect()
的情况下,也要通过用户捕获和再现请求标头)。 双重插入的检查应单独进行。
通常,如果要禁用客户端的重复输入,则可以创建令牌并将其发送给客户端。 当客户要插入时,可以检查此令牌是否有效,然后进行插入(然后从有效列表中删除令牌)。
那只是许多方式之一。
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.