`
xhfei
  • 浏览: 115412 次
  • 性别: 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> 

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

相关推荐

    WebWork类型转换

    例如,在处理多个用户对象的创建时,可以通过在页面上设置多个文本框来接收用户的输入信息,并通过表单提交给服务器端进行处理。 下面是一个具体的示例: ##### 示例代码 **index.jsp** - 页面代码示例: ```jsp...

    webwork类型转换入门一

    WebWork是一个基于Java的开源MVC(模型-视图-控制器)框架,它在早期的Web开发中被广泛使用,特别是在Struts1之后,作为替代方案出现。本篇将介绍WebWork的基础知识,特别是它的类型转换机制,这对于理解Web应用程序...

    webwork

    在提供的"Webwork2 Guide.pdf"文档中,你可能会学习到如何安装配置WebWork2环境,创建和运行第一个WebWork应用程序,理解Action和Interceptor的工作原理,以及如何利用WebWork的特性进行表单处理、异常管理和国际化...

    webwork所需的jar包

    WebWork是一个基于Java的开源MVC(模型-视图-控制器)框架,它为构建Web应用程序提供了强大的支持。WebWork的核心在于它的动作框架,它允许开发者通过简单的接口处理用户请求并控制应用程序流程。在WebWork的运行...

    webwork.pdf

    WebWork 2.0提供了强大的输入校验功能,能够自动检测和处理表单提交的数据,确保数据的有效性和安全性。这一特性对于构建健壮的Web应用程序至关重要,可以有效防止常见的安全漏洞,如SQL注入和跨站脚本攻击。 #####...

    webWork2开发指南

    ActionForm则作为模型和视图之间的数据载体,用于封装表单提交的数据。 3. **Interceptors(拦截器)**:WebWork2引入了拦截器的概念,它们在Action执行前后执行,可以用于日志记录、事务管理、权限验证等。拦截器...

    webwork 2.1.7.jar

    6. **Form Handling**:WebWork自动处理表单提交,支持表单验证和类型转换,减少了处理用户输入的繁琐工作。 7. **Internationalization (i18n) and Localization (l10n)**:框架内置对国际化和本地化的支持,使得...

    WebWork2.0讲解说明

    1. 智能表单绑定:WebWork2.0支持自动将HTTP请求参数绑定到Action的属性,减少了手动处理请求参数的代码。 2. 强大的异常处理:WebWork2.0提供了一套完善的异常处理机制,可以将异常转换为用户友好的错误信息。 3. ...

    WEBWORK

    WebWork 是一个基于 Java 的开源 MVC(Model-View-Controller)框架,它在早期的 Web 应用开发中非常流行,尤其是在 Struts 1 之前。WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    WebWork 是一个基于Java的开源MVC(Model-View-Controller)框架,它主要用于构建企业级的Web应用程序。WebWork1.4是该框架的一个较早版本,它为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理、国际化...

    WebWork教程开发资料

    当表单提交时,WebWork会针对每个字段执行验证。相反,Model-Driven Action将整个对象模型作为操作单位,模型对象包含所有相关属性,这样可以实现更复杂的数据关联验证。 **ActionContext(Action上下文)** ...

    webwork的jar包

    WebWork 2 是WebWork 1 的后续版本,它引入了许多增强和新特性,如增强的动作类型、拦截器、更好的类型转换机制和更强大的表单回填功能。版本2.2.7是一个稳定版本,包含了一些重要的bug修复和性能优化。`webwork-...

    webwork_框架文档

    WebWork是一个基于Java的MVC(Model-View-Controller)框架,它在早期的Web开发中扮演了重要的角色,尤其是在Struts之前或作为其替代品出现。WebWork提供了许多先进的特性,如动作拦截器、类型转换、强大的异常处理...

    Webwork2_guide

    Webwork2的表单类可以方便地与Action结合,简化数据处理过程。 7. **配置(Configuration)**:Webwork2的配置文件定义了URL到Action的映射,Action的转发规则,以及拦截器的配置等。理解配置文件对于有效使用...

    webwork中文参考手册

    4. **强大的表单处理**:WebWork提供了强大的表单绑定和验证功能,可以直接将表单数据绑定到Java对象,同时进行验证。 5. **强大的异常处理**:框架能够优雅地处理异常,将异常信息转化为用户友好的错误页面,提高...

Global site tag (gtag.js) - Google Analytics