使用token可以解决重复提交问题,这里的重复提交一个指的是可能连续点击提交按钮,从而导致同一表单的重复提交。另外一种情况指的是提交成功后点击后退,退回到刚才的页面,继续提交。下面以一个注册用户的页面为例。
首先在跳转到需要提交的表单页面之前必须先创建令牌。即必须在跳转到该页面之前执行saveToken(request)。例如,可以在跳转到注册页面前的ActionServlet中创建令牌,并且saveToken(request)方法同时将令牌保存在了当前session中(beforeResisterAction是跳转到注册页面前的Action):
public beforeRegisterAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {
this.saveToken(request);
return new ActionForward("register.jsp");
}
}
然后在跳转到register.jsp页面时,需要使用html自带的标签<html:form>才可,可以在改页面的源码中看到
<input type="hidden" name="org.apache.struts.taglib.html.TOKEN"value="6164b68f90b167bdb952be7b5bc833be">html:form标签自动给你生成的一行,这个value即为在beforeRegisterAction中struts根据当前时间生成的一个令牌值,在注册页面提交时,该令牌值也一起提交到后台处理程序:
public class RegisterAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {
//isTokenValid(request)方法是验证令牌有效性的方法,通过把session中的令牌值和刚才在注册表单中一起提交的令牌值进行比较来验证令牌是否正确
if(!isTokenValid(request)){
//如果无效的话则重新设置令牌,可以进行自己的逻辑处理
。。。。。。。。
this.saveToken(request);
return (new ActionForward(mapping.getInput()));
}else{
//如果令牌有效的话,需要先将令牌重置,然后下面接着自己的逻辑处理即可
resetToken(request);
}
。。。。。。。。。。。
}
以上即简单的演示了token的是使用过程。
分享到:
相关推荐
以下是使用Struts实现Token机制的详细步骤: 1. **配置Struts2拦截器**: 首先,我们需要在Struts2的配置文件(struts.xml)中添加Token拦截器。这个拦截器会处理Token的生成和验证过程。例如: ```xml ...
在提供的压缩包文件"struts+token机制解决表单重复提交"中,可能包含了具体的Struts配置文件、Action类、Interceptor实现以及示例代码,可以帮助读者更深入地理解并实践这个机制。通过对这些代码的学习和研究,...
Struts的Token机制是Web应用中防止表单重复提交的一种常用方法。在处理表单提交时,如果用户意外地多次点击了提交按钮,可能会导致数据的重复录入,从而引起不必要的问题,例如订单重复、数据库数据异常等。为了解决...
下面将详细阐述Struts2中Token机制的工作原理、配置以及使用方法。 1. Token机制概述: Token机制是通过在客户端(浏览器)和服务器之间传递一个唯一的标识符(Token)来防止表单的重复提交。当用户首次提交表单时...
在使用Struts + Spring + iBatis的项目中,可以具体地应用上述Token机制: - **项目架构**: - Struts负责View层,Spring在Service层提供事务控制,iBatis用于替代JDBC。 - 所有的页面访问都通过Struts的Action进行...
在Web表单提交中,防止重复提交是一个常见的需求,而Struts2的Token机制就是为了应对这一问题而设计的。Token机制能确保用户只能提交一次表单,避免了由于网络延迟或误操作导致的重复数据录入。 ### 一、Token机制...
总的来说,Struts Token机制通过维护一个临时的、一次性使用的Token,有效地解决了Web应用中的表单重复提交问题,提高了系统的稳定性和安全性。在实际开发中,应根据项目需求灵活运用并优化此机制。
**一、Struts2 Token机制** 1. **令牌生成**:当用户访问一个需要防护的表单页面时,Struts2框架会在服务器端生成一个唯一的令牌,并将其存储在服务器的会话(Session)中。同时,这个令牌会被添加到HTML表单中,...
在Struts框架中,令牌机制(Token)是一种防止重复提交的有效方法,它主要用于处理表单数据的并发控制,防止用户意外或者恶意地多次提交表单,从而确保数据的一致性和安全性。 在Web应用中,用户可能会因为网络延迟...
**如何在Struts2中实现Token机制?** 在Struts2中,实现令牌机制主要分为以下几个步骤: 1. **配置Struts2的Token拦截器:** 在struts.xml配置文件中,需要将`token`拦截器加入到默认或者特定的Action配置中。例如...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用...综上所述,Struts2的Token机制是防止Web应用中重复提交的有效工具,通过合理的配置和编程,可以为用户的操作提供更安全的环境。
#### 四、在Action中使用Token机制 在Action类中,可以调用`Token.isTokenStringValid`方法来验证Token的有效性。如果Token有效,则继续处理表单提交;否则,可以根据具体情况返回错误信息或重定向到指定页面。 ``...
通过以上介绍可以看出,无论是使用Struts框架还是其他框架,利用Token机制都能有效地解决Web应用程序中表单重复提交的问题。关键是正确地生成、验证和清理Token,确保每个请求都是有效的且不被重复使用。这种方法...
通过以上方法,Struts的Token机制能有效防止Web应用中的重复提交问题,确保数据的准确性和一致性。不过,随着技术的发展,现代框架如Spring Boot等提供了更先进的解决方案,例如CSRF(跨站请求伪造)保护,可以考虑...
Struts1.x是一个非常经典的Java Web开发框架,它在企业级应用中被广泛使用。而Struts1.x的令牌机制(Token)则是防止重复提交、跨页请求攻击的重要手段。在此,我们将深入探讨Struts1.x令牌的使用方法及其背后的原理...
本文将深入探讨如何在Struts框架中利用Token机制来解决这个问题。 一、表单重复提交问题 表单重复提交可能发生在用户点击提交按钮后,由于网络延迟或刷新页面等原因,导致请求被多次发送到服务器。如果不加以控制,...
总结,Struts2的tokenSession机制是JavaEE Web开发中防止重复提交的有效手段,通过生成并校验token,确保每个请求的唯一性,从而保护了业务数据的完整性。在实际项目中,我们需要正确配置和使用这个机制,以提高应用...
在处理表单提交时,Struts提供了一种Token机制来防止重复提交和跨站请求伪造(CSRF)攻击。Token是在服务器端生成的一个唯一标识,通常会附加到表单中,当用户提交表单时,服务器会验证这个Token是否有效,从而确保...
在Struts框架中,Token机制是一个重要的安全特性,用于防止重复提交(Double Submit)和跨页请求伪造(Cross-Site Request Forgery, CSRF)攻击。下面将详细解释Struts Token的工作原理、应用场景以及如何在实际项目...
以下是对Struts1.x中使用Token防止提交的详细说明: 1. **理解Token机制**: Token机制的核心思想是在客户端和服务器之间建立一种绑定关系,每个提交请求都必须携带一个服务器生成并已存储的唯一令牌。如果令牌...