2012-11-23 20 views
7

大家好我有一些jsp页面和即时通讯使用struts2来处理我的表单。 用户提交表单后,地址栏中显示的网址变为somthing.action,所以当用户刷新页面时,表单会重新提交。我该如何处理?提交表格后。避免重复提交Struts 2 jsp页面

回答

1

POST REDIRECT GET

这种模式需要遵循,以防止重新提交表单上刷新。这意味着,在提交POST请求后,POST应发送REDIRECT响应以使用GET来获取目标页面。使用这种模式,如果用户刷新页面,只有GET请求再次发生,所以同一页面被提取而不更新服务器中的任何内容。

这是一种常见的网页设计模式。 Google会为此提供大量资源。

3

对其他答案都+1。

Post/Redirect/Get是每种网络技术的经典模式。

Token Interceptor是另一种方式,当你使用Struts2;

如果您不关心与旧浏览器或JavaScript禁用的浏览器的复古兼容性,还有第三种方法:HTML5window.history.pushState

只需在加载页面后将url重置为原始页面,然后按F5将会获得原始页面,而不是重新提交请求。

$(document).ready(function() { 
    window.history.pushState("","", "myOriginalUrlWithNoParams"); 
}); 
+1

对于HTML5技巧+1。 –