【问题标题】:Avoid duplicate submission of Struts 2 jsp page避免重复提交Struts 2 jsp页面
【发布时间】:2012-11-11 19:45:54
【问题描述】:

大家好,我有一些 jsp 页面,我正在使用 struts2 来处理我的表单。 用户提交表单后,地址栏中显示的url变成了somthing.action,所以当用户刷新页面时,表单又被提交了。我该如何处理?提交表单后。

【问题讨论】:

    标签: java html jsp struts2


    【解决方案1】:

    如果目标是防止重复提交表单,请使用token拦截器http://struts.apache.org/2.x/docs/token-interceptor.htmltokenSession拦截器http://struts.apache.org/2.x/docs/token-session-interceptor.html

    如果您只是想在提交后刷新页面而不再次提交,则重定向到只显示结果而不显示表单的操作。为此使用redirectAction 结果。

    【讨论】:

      【解决方案2】:

      +1 对其他两个答案。

      Post/Redirect/Get 是所有网络技术的经典模式。

      Token Interceptor 是另一种方法,当您使用 Struts2 时;

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

      页面加载完毕后,将url重置为原来的,按F5会得到原来的页面,而不是重新提交请求。

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

      【讨论】:

        【解决方案3】:

        POST REDIRECT GET

        需要遵循此模式以防止在刷新时重新提交表单。这意味着,在提交POST 请求后,POST 应发送REDIRECT 响应以使用GET 获取目标页面。使用此模式,如果用户刷新页面,则只会再次发生 GET 请求,因此无需更新服务器中的任何内容即可获取相同的页面。

        这是推荐用于 Web 的常见设计模式。 Google 会为此提供大量资源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-30
          • 1970-01-01
          • 2014-05-03
          • 2012-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-30
          相关资源
          最近更新 更多