`

struts2中表单重复提交的问题

阅读更多
看了网上说的有关struts2不重复刷新有很多,基本上都是在同一个页面中可以,那么我说下在一个页面中有一个按钮当点击后,到另一个页面。这个页面有许多列表记录,点击保存后再一次跳转到上一次页面中。那么在当前页面点击右键刷新,问题就在这了。

以前的
html:
<s:form action="topic" method="post">
  <s:token name="topic.name"/>
</s:form>


struts.xml:
  <action name="topic_*" method="{1}" class="topicAction">
     <result name="success">/topic/manage_topic.jsp</result>
     <result name="invalid.token" type="dispatcher">/common/noBack.jsp</result>
     <interceptor-ref name="defaultStack" />
     <interceptor-ref name="token"> 
        <param name="includeMethods">addTopicElement</param>  
      </interceptor-ref>   
     <interceptor-ref name="token">
         <param name="excludeMethods">default</param>
      </interceptor-ref>
      
   </action>

  注意:
【1】:
<s:token>标签创建一个新的令牌值,并用你所指定的令牌名把令牌保存到session中。而这个令牌值是随即产生的经过加密的字符序列,不会重复。

其次需要为action配置TokenInterceptor或者TokenSessionStoreInterceptor拦截器。这两个拦截器都已经在struts-default.xml中定义,但没有包含在defaultStack拦截器栈中。

【2】:
<interceptor-ref name="token"/>和<interceptor-ref name="defaultStack"/>是两个拦截器的配置,目的是为了接收页面传入

的token令牌及参数,<result name="invalid.token">/common/noBack.jsp</</result>指当发现重复提交时,需要流转到的页面.
【3】:
excludeMethods指定要排除的方法,includeMehtods是要拦截的方法。
 


如果是用javascript来提交的话,看下边----
function selectA() {

    var url = "relation_addRelationshipTopic.do?relation.rnId=<%=rn != null ? rn.getId().longValue() : -1%>&relation.selectRn="+selectRn+"&fresh=" + Math.random()+"";
    var token = "struts.token.name=relation.token";  
    var token2 = "relation.token=";  
    token2 += document.getElementsByName("relation.token")[0].value;  
    url += "&" + token + "&";  
    url += token2;
    location = url;
}

注:
  <s:token name="relation.token"/>
  它回自动的生成两个hidden,一个是struts.token.name,一个是reletion.token.
 
分享到:
评论

相关推荐

    Struts2解决表单重复提交

    综上所述,Struts2框架提供了token机制以及灵活的跳转方式配置来解决表单重复提交的问题。开发者在使用时需要注意配置token相关标签和拦截器,并通过设置正确的结果视图跳转类型来防止因刷新页面导致的重复提交。...

    struts2 防止表单重复提交的例子

    在Web开发中,表单重复提交是一个常见的问题,它可能导致数据的不一致性或者服务端处理逻辑的混乱。Struts2框架提供了一种解决方案,即使用Token机制来防止表单的重复提交。以下是对这个主题的详细说明: 1. **表单...

    struts2利用token防止表单重复提交(源代码)

    struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...

    struts2防止表单重复提交--重定向

    在Web开发中,表单重复提交是一个常见的问题,可能导致数据不一致或处理逻辑的混乱。Struts2提供了多种方法来防止这种情况,其中一种是通过重定向来实现。下面将详细解释Struts2如何通过重定向来防止表单重复提交。 ...

    Struts2防止表单重复提交示例

    在Struts2中防止表单重复提交的过程主要包括以下几个步骤: 1. **生成Token**:当用户发起表单请求时,服务器会生成一个唯一的Token并将其存储在服务器的会话(Session)中,同时将这个Token作为隐藏字段放入到HTML...

    Struts2文件上传下载和表单重复提交问题

    综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。

    struts2令牌解决页面重复提交问题

    在Web开发中,一个常见的问题就是防止用户意外或恶意地重复提交表单,这可能导致数据的不一致性和服务器负载的增加。Struts2提供了一种称为“令牌”或“Token Session”的机制来解决这个问题。 令牌机制的工作原理...

    Struts2 表单 重复提交

    通过以上步骤,我们可以有效地防止Struts2应用中的表单重复提交问题。这个机制不仅提高了用户体验,也避免了因重复提交导致的数据不一致。在实际项目中,根据具体需求,可能还需要结合其他验证机制,如JavaScript的...

    Struts2防止重复提交解决方案

    在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及相关的技术概念。 首先,我们要理解Struts2中的拦截器(Interceptor...

    Struts表单重复提交问题

    在处理用户表单提交时,Struts框架可能会遇到一个常见的问题,即表单重复提交。这种情况通常发生在用户点击提交按钮后,由于网络延迟或其他原因导致请求被多次发送,从而可能对服务器端造成多次数据插入或更新,导致...

    【原创】Struts2防止表单重复提交.doc

    ### Struts2防止表单重复提交的技术解析 #### 一、引言 在Web应用程序开发过程中,表单重复提交是一个常见的问题,特别是在网络环境不稳定或用户误操作的情况下。这种重复提交不仅可能导致数据冗余,还可能引起事务...

    Struts之Token解决表单那重复提交

    综上所述,Struts框架通过Token机制有效地解决了表单重复提交的问题,提供了更健壮的Web应用安全性。正确理解和应用这一机制对于Java Web开发者来说至关重要。在实际项目中,结合其他防御策略,如CSRF防护,可以...

    struts token机制解决表单重复提交

    总的来说,Struts Token机制通过维护一个临时的、一次性使用的Token,有效地解决了Web应用中的表单重复提交问题,提高了系统的稳定性和安全性。在实际开发中,应根据项目需求灵活运用并优化此机制。

    struts+token机制解决表单重复提交

    在提供的压缩包文件"struts+token机制解决表单重复提交"中,可能包含了具体的Struts配置文件、Action类、Interceptor实现以及示例代码,可以帮助读者更深入地理解并实践这个机制。通过对这些代码的学习和研究,...

    Servlet、Struts、SpringMVC对于表单重复提交的解决方案

    在Web开发中,表单重复提交是一个常见的问题,可能导致数据不一致或服务器资源浪费。Servlet、Struts和SpringMVC是Java Web开发中常用的三大框架,它们各自提供了处理这一问题的策略。以下将详细探讨这三种框架如何...

    Struts2 防重复提交Demo

    在Struts2中,要在表单中添加`s:token`标签,只需要在相应的JSP页面中像下面这样写: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ... &lt;!-- 表单内容 --&gt; 提交"/&gt; ``` 这里的`s:token`标签会生成一...

    struts2中防止重复提交的方法

    在Struts2框架中,防止重复提交是一个重要的安全性考量,因为重复提交可能导致数据不一致性和资源浪费。在上述描述中,给出了三种主要方法来解决这个问题: 1) **使用 `&lt;s:token&gt;` 标签** Struts2 提供了一个称为 ...

Global site tag (gtag.js) - Google Analytics