`
xhfei
  • 浏览: 117534 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

webwork token防止表单重复提交(转)

阅读更多
1.定义你自己的拦截器栈:
   <interceptors>   
    <interceptor-stack name="submitToken">
     <interceptor-ref name="token-session"/>
     <interceptor-ref name="defaultStack"/>
    </interceptor-stack>
   </interceptors>

2.在需要防止重复提交的action里添加刚刚定义的拦截器栈,像这样:
   <action name="sendMessage" class="net.jbbs.webwork.MessageAction" method="send">
    <result name="success" type="dispatcher">
     <param name="location">getMessagesList.action?type=sendbox</param>
    </result>
    <result name="fail" type="dispatcher">
     <param name="location">sendMessage.jsp</param>
    </result>
    <result name="invalid.token" type="dispatcher">
     <param name="location">sendMessage.jsp</param>
    </result>
    <interceptor-ref name="submitToken"/>
   </action>

3.修改相应的包含提交表单的jsp文件,在这里是sendMessage.jsp:
     <ww:token name="sendMessageToken"/>

做完上面三个步骤,应该可以实现防止重复提交了(注意其中彩色字体的地方)。

接着分析一下这里为什么用的是token-session(com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor), 而不是token(com.opensymphony.webwork.interceptor.TokenInterceptor). 它们的区别是当发生重复提交的时候,token-session会根据action的状态显示相应的页面而不执行相应的action,而token则会显示invalid.token对应的页面。token-session的用户体验无疑要好一些,有多少用户喜欢出错信息呢?。
分享到:
评论
1 楼 萧十一狼 2011-12-30  
<result name="invalid.token" type="dispatcher"> 
     <param name="location">sendMessage.jsp</param> 
    </result> 

难道不是配置的重复提交的出错信息吗???

相关推荐

    Struts2知识点总结

    防止表单重复提交是Web开发中的一个重要功能,为了避免重复提交造成的数据重复或错误,Struts2同样提供拦截器实现这一功能。可以配置token拦截器来为每个请求生成一个令牌(token),并将这个令牌存储在客户端。提交...

    Struts 2权威指南--基于WebWork核心的MVC开发

    例如,通过配置拦截器,可以自动对表单提交的数据进行转义,防止XSS攻击。同时,Struts 2的Token机制可以防止CSRF攻击,确保用户操作的安全性。 本书《Struts 2权威指南》不仅涵盖了以上的基本概念,还会深入探讨...

    struts2学习笔记.doc

    - 使用Token机制防止重复提交。 - 在`struts.xml`中配置Token拦截器。 - 在Action类中处理Token验证逻辑。 #### 八、杂项 **8.1 常见问题解答** - **问题汇总**:针对Struts2开发过程中常见的问题进行总结和解答...

    Struts2.1学习笔记

    - **token防止表单重复提交**:使用`&lt;s:token&gt;`标签可以生成一个隐藏字段,防止用户多次提交同一个表单。 通过以上内容的学习,可以全面了解Struts2.1框架的核心特性和使用方法,这对于开发者来说是非常宝贵的资源...

    java必备知识点大全.pdf

    防止表单重复提交:为了防止表单被重复提交,可以使用token令牌或者点击后禁用提交按钮。 JSP标签:JSP标签用于在JSP文件中嵌入Java代码。 过滤器器:过滤器是用于对Web应用中的请求和响应进行预处理和后处理的...

    Struts2轻松入门

    - **使用拦截器**:Struts2提供了多种内置拦截器,如Token拦截器、文件上传拦截器等。 - **自定义拦截器**:开发者可以根据需要创建自己的拦截器以满足特定需求。 #### 七、探讨IOC模式 - **依赖注入**:通过框架...

Global site tag (gtag.js) - Google Analytics