`
VerRan
  • 浏览: 456906 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

struts中实现避免刷新重新提交

阅读更多
1.测试人员都走了好久了,一同事的模块由于涉及到附件的添加不能走AJAX.就走的submit这样当添加成功后,刷新的时候就会再增加一条信息.
   经过大家讨论只要让他重定向就是了.在struts的action中让一个url实现重定向的方法:
  new ActionForward("url",true);
  或者在配置文件里进行修改.
2. 网上的其它方法,但我自己没有测试
isTokenValid
Return true if there is a transaction token stored in the user's current session, and the value submitted as a request parameter with this action matches it.
resetToken
Reset the saved transaction token in the user's session.
saveToken
Save a new transaction token in the user's current session, creating a new session if necessary.
为了防止用户重复提交,在数据读入.do未中加入saveToken(request),
在第二个.do的开始判断isTokenValid(request)如果有效继续否则丢出错误信息,
最后resetToken(requet)注销token
struts自带的例子:
Struts 里面有一个检查重复提交的机制:
具体可以参看 Struts-example 里面的相关程序:
in EditRegistrationAction:
// Set a transactional control token to prevent double posting
saveToken(request);
in SaveRegistrationAction 里面:
if (!isTokenValid(request)) {
    // 处理错误
}
resetToken(request);

《j2ee核心模式》这本书上有详细介绍。
  基本原理
 第一次提交,生成同步令牌 写入到session,同时把同步令牌写入到返回页中;
 再次提交,比较同步令牌,如果相同,重复上面动作, 不同则重复提交了。
 if (!isTokenValid(request)) {
  errors.add(ActionErrors.GLOBAL_ERROR,
         new ActionError("error.transaction.token"_));
 }
 resetToken(request);
这种方法在<<精通struts>>一书中也提到了.
分享到:
评论
1 楼 gongmingwind 2008-12-16  
谢谢提供!

相关推荐

    struts token 防止页面刷新,重复提交

    ### Struts Token机制防止页面刷新及重复提交 在Web应用开发过程中,特别是在使用MVC框架如Apache Struts进行开发时,防止表单重复提交是一个重要的安全措施。表单重复提交通常发生在用户点击“提交”按钮后,由于...

    Struts2解决表单重复提交

    为了避免刷新页面导致的重复提交,可以将结果视图的跳转类型设置为redirect,即将页面重定向到另一个视图,这样即使刷新也不会回退到原表单页面。除了直接使用redirect,还可以使用redirectAction,并在result中配置...

    struts2+jquery无刷新取后台数据

    在这里,"struts2+jquery无刷新取后台数据"的实现主要是利用Ajax技术,结合Struts2的Action和Result,实现在用户界面上的无刷新交互。 首先,登录功能是Web应用的基础。在Struts2中,我们可以创建一个登录Action类...

    Struts2防止重复提交解决方案

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

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

    - Token应该在提交成功后从Session中移除,避免因为用户刷新页面而导致的误报。 - 考虑到并发问题,生成Token时需确保其全局唯一性。 - 如果使用了缓存,记得清理缓存中的过期Token。 总的来说,Struts Token机制...

    struts+jquery实现无刷新验证用户名是否存在

    在这个项目中,"struts+jquery实现无刷新验证用户名是否存在",主要是利用这两者来实现用户注册时的实时验证功能,避免用户提交重复或无效的用户名,提高用户体验。 首先,我们需要了解Struts2的Action类。在Struts...

    刷新action避免重复提交

    防止提交 在用struts2.0标签开发中,经常要使用form提交.在点击"提交"后,我们通常会弹出一个提示信息的页面,用户此时有可能会按f5刷新当前提交的action,从而将多个相同的数据保存到了后台数据库,并且造成了潜在的安全...

    struts2token回退刷新

    4. **令牌回退**:当表单提交成功后,为了防止用户意外刷新页面导致重复提交,Struts2会清除服务器会话中的令牌。这种行为称为令牌回退,可以避免用户在不知情的情况下多次执行相同操作。 **二、防止重复提交** ...

    struts1实现的文件批量上传

    在Struts1中实现文件上传,我们需要考虑前端的HTML表单、ActionForm、Struts配置文件以及后台的Action处理。 首先,前端实现是通过一个支持多文件选择的HTML表单来完成的。表单需要设置`enctype="multipart/form-...

    解决Struts重复提交

    防止Struts中的重复提交是Web应用开发中的重要环节,通过合理运用Token机制、OWSM或者自定义控制器验证,可以有效地避免此类问题。在实际开发中,我们需要结合项目的具体需求,选择合适的防重复提交策略,以确保系统...

    用struts使用Token机制来实现防重复提交

    为了避免这种情况,我们可以采用Token机制来实现防护。 Token机制的基本原理是在客户端(通常是浏览器)与服务器之间创建一个一次性使用的凭证,这个凭证在提交表单时会被验证。如果同一个表单被多次提交,只有第一...

    Struts解决重复提交步骤

    #### 如何实现Struts中的令牌机制? 1. **生成令牌**:首先,在用户提交表单之前,服务器需要生成一个唯一的令牌,并将其存储在用户的会话中。同时,将这个令牌值嵌入到表单中,通常以隐藏字段的形式存在。 ```...

    struts2中token限制表单多次提交

    `excludePattern`是为了避免Struts2自身的Action与Token相关的Action冲突。 3. 使用Token拦截器: 在Action类中,需要使用`@Token`注解来标记需要进行Token验证的方法。例如: ```java public class MyAction ...

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

    3. **Redirect重定向**:处理完表单后,使用HttpServletResponse的`sendRedirect()`方法,将用户重定向到另一个页面,这样即使用户刷新页面,也不会重新提交表单。 4. **使用同步锁(synchronized)**:在Servlet...

    jqgrid+struts2实现的增删改查

    在本项目中,jqGrid 与 Struts2 结合,实现了Web应用中的核心功能——增删改查。以下是关键步骤: 1. **配置 Struts2**:首先,需要在项目的 `struts.xml` 配置文件中设置Action类及其对应的URL映射,以及指定使用...

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

    三、Struts中实现Token机制的步骤 1. **配置Action** 在Struts配置文件中,为需要防止重复提交的Action添加一个拦截器引用,如`token`或`token-session`。这两个拦截器都可以处理Token,但`token-session`更安全,...

    通过xml配置搞定Struts重复提交问题

    在本文中,我们将深入探讨如何通过XML配置来解决Struts中的重复提交问题。 首先,理解重复提交的原因。在Web应用中,用户点击提交按钮后,如果网络延迟或刷新页面,同一个请求可能被发送多次。Struts框架默认情况下...

Global site tag (gtag.js) - Google Analytics