`

关于struts2中的时令牌通过history.back返回后不能提交的问题

阅读更多
例如一个表单利用struts2中的 <s:token/> 加上 tokenSession拦截器很有效防止表单重复提交
,但是action中对表单的数据也做了一次验证,切验证并未通过,我们一般会通过history.back()返回表单输入页面,当表单数据正确填满后,发现表单不能正常提交,就是因为第一次提交的时候tokenSession 将session中存放的 <s:token/>生成的数据给清除了

<input type="hidden" name="struts.token.name" value="struts.token" />
<input type="hidden" name="struts.token" value="O4YUBFGILUYNIDRX6PTTQZRW4Q9LJHSO" />


解决办法就是在action中如果验证不通过时,把这个值再次放进session中

private final static String STRUTS_TOKEN_NAME = "struts.token.name";
private final static String STRUTS_TOKEN = "struts.token";


HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
session.setAttribute(STRUTS_TOKEN_NAME, request.getParameter(STRUTS_TOKEN_NAME));
session.setAttribute(STRUTS_TOKEN, request.getParameter(STRUTS_TOKEN));


分享到:
评论
1 楼 wuyue521_2008 2012-03-28  
private final static String STRUTS_TOKEN_NAME = "struts.token.name";  
private final static String STRUTS_TOKEN = "struts.token";  
 
 
HttpServletRequest request = ServletActionContext.getRequest();  
HttpSession session = request.getSession();  
session.setAttribute(STRUTS_TOKEN_NAME, request.getParameter(STRUTS_TOKEN_NAME));  
session.setAttribute(STRUTS_TOKEN, request.getParameter(STRUTS_TOKEN));  

相关推荐

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    Struts2漏洞检查工具Struts2.2019.V2.3

    "Struts2漏洞检查工具Struts2.2019.V2.3"是一个专门针对这些漏洞进行检测的工具,旨在帮助开发者和网络安全专业人员识别并修复Struts2框架中的安全问题。 Struts2的安全漏洞主要包括以下几类: 1. OGNL(Object-...

    struts-2.3.15.1-lib.zip官方jar包

    4. **配置更新**:根据官方文档更新配置文件,如struts.xml或web.xml,以适应新版本的要求。 5. **测试**:升级后,进行详尽的功能测试和安全性测试,确保所有功能正常且没有新的安全漏洞引入。 6. **监控**:升级...

    Struts2升级到2.5.30,问题解决及过程记录

    2. **配置文件的调整**:Struts2的配置文件(如struts.xml)可能会因版本升级而需要调整。例如,新的版本可能会引入新的拦截器或动作配置,需要检查并更新配置以充分利用新特性。 3. **API变化**:新版本可能移除了...

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

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

    struts-json-plugin-2.1.8.jar struts2-junit-plugin-2.1.8.jar json-lib-2.1.jar

    总的来说,这三个文件的组合是为了解决Struts2框架中与JSON处理相关的版本不匹配问题,通过导入它们,开发者可以确保Struts2的JSON插件正常工作,同时利用JUnit插件进行更有效的测试,而`json-lib-2.1.jar`则为JSON...

    关于struts2里用javascript刷新window.showModalDialog的父页面

    ### 关于Struts2中利用JavaScript刷新window.showModalDialog的父页面 在Web开发中,尤其是在使用Struts2框架进行项目开发时,我们经常会遇到需要弹出模态对话框(modal dialog)的需求。其中一个常见的场景就是...

    struts2-core-2.3.1.2.jar

    struts2必须核心jar包, struts2-core-2.3.1.2.jar

    struts2文件上传中的struts.multipart.saveDir提示信息

    总之,理解和配置`struts.multipart.saveDir`是Struts2文件上传功能的基础,通过设置这个参数,可以确保上传过程的顺利进行,避免因为找不到临时存储位置而导致的运行时错误。同时,合理规划文件存储策略,结合其他...

    struts2-core-2.3.15.1.jar

    struts2-core-2.3.15.1.jar

    解决MyEclipse下开发Struts异常:org.apache.struts.taglib.bean.CookieTei.doc 下载

    在本篇文章中,我们将深入探讨如何解决在MyEclipse环境下开发Struts应用时遇到的一个常见问题:“org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: org.apache.struts.taglib...

    struts-2.3.16.3-docs.zip

    此压缩包"struts-2.3.16.3-docs.zip"包含了Struts 2版本2.3.16.3的官方文档,这个版本在Struts 2的生命周期中扮演了重要的角色,提供了许多增强的功能和修复了已知的漏洞。 Struts 2的核心特性包括: 1. **Action...

    使用struts2实现登录的简单示例.pdf

    2. 配置Struts2需要注意web.xml和struts.xml文件的配置 3. 使用Struts2标签库可以简化jsp页面的编写 通过这个简单的示例,我们可以了解Struts2框架的基本配置和使用方法,以及如何实现登录和课程选择功能。

    struts2中的struts-default.xml

    struts2中的struts-default.xml

    struts2-core-2.0.12.jar

    Struts2的配置主要在struts.xml文件中进行,这里定义了Action的映射、结果类型、拦截器栈等。开发者可以通过XML或注解方式来配置Action,使应用更加灵活。 **4. 拦截器(Interceptors)** 拦截器是Struts2的一大...

    struts2-json-plugin-2.3.8.jar

    在实际开发中,为了使用这个插件,你需要将`struts2-json-plugin-2.3.8.jar`文件放入项目的类路径(classpath)下,然后在Struts2的配置文件(通常为struts.xml)中启用JSON插件。在Action类中,定义返回JSON数据的...

    org.apache.struts缺少所需包

    import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction等缺少

    struts1.x 和 struts2.x向Action里填充jsp参数原理

    本篇文章将深入探讨Struts1.x和Struts2.x在向Action中填充JSP参数的原理。 Struts1.x的工作原理: Struts1的核心是ActionServlet,它是一个实现了Servlet接口的控制器。当用户发起HTTP请求时,请求会被Dispatcher...

    struts-2.3.4.1-all.zip

    接着,根据项目需求进行相应的配置,例如在struts.xml中配置Action、拦截器和结果类型。此外,还需要在JSP页面中使用Struts 2的标签库,以便利用其提供的各种功能。 在开发过程中,还需要关注安全问题,因为Struts ...

    Struts2防止重复提交解决方案

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

Global site tag (gtag.js) - Google Analytics