比如在增、删、改完后,刷新页面时会重新提交上次的请求。
解决办法:
在页面的<body></body>中添加token令牌:
1. 在页面中定义token:
<%@ page import = “java.util.Random”%>
<%
Int token = new Random().nextInt();
Session.setAttribute(“token”,token);
%>
<html>
<head><title></title></head>
<body>
定义token
设置一个隐藏域把token的值传入后台
<input type=”hidden” name = “token” value=”<%=token%>”>
</body>
</html>
2. 在Action中:
首先要定义一个token,并提供get 和set 方法
定义一个int型变量接受session中token的值
Int temp = 0;
Try{
Temp = Integer.parseInt(ActionContext.getContext().getSession().get(“token”).toString());
}catch(){
}
If( temp == token){
第一次时,temp与token肯定相等 ,放过执行,然后在remove掉token。
ActionContext.getContext().getSession().remove(“token”);
}else{
重复提交, 此时token的值为空.
ActionContext.getContext().getSession().remove(“token”);
Return 返回页面;
}
分享到:
相关推荐
总的来说,Struts Token机制通过维护一个临时的、一次性使用的Token,有效地解决了Web应用中的表单重复提交问题,提高了系统的稳定性和安全性。在实际开发中,应根据项目需求灵活运用并优化此机制。
3. **表单提交**:用户填写完表单并提交后,Struts2拦截器会自动将表单中的令牌值与session中的令牌进行比较。 4. **验证令牌**:如果两者匹配且令牌未被使用过,那么处理表单请求;若不匹配或令牌已被使用,Struts...
在Struts配置文件中,为需要防止重复提交的Action添加一个拦截器引用,如`token`或`token-session`。这两个拦截器都可以处理Token,但`token-session`更安全,因为它会将Token存储在会话中,而不仅仅是请求中。 2....
总结起来,Struts2通过重定向策略可以有效地防止表单重复提交,结合其他如Token Session Strategy等方法,可以进一步提高应用的安全性和稳定性。开发者可以根据项目需求选择合适的防重提交方案,确保系统正常运行。
在提供的压缩包文件"struts+token机制解决表单重复提交"中,可能包含了具体的Struts配置文件、Action类、Interceptor实现以及示例代码,可以帮助读者更深入地理解并实践这个机制。通过对这些代码的学习和研究,...
在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及相关的技术概念。 首先,我们要理解Struts2中的拦截器(Interceptor...
在Struts2中,`<s:token/>`标签用于生成一个全局唯一的标识符(GUID),该标识符被存储在用户的会话(session)中,并且在表单中作为隐藏字段存在。当用户提交表单时,服务器端会检查表单中的GUID与会话中的GUID是否...
- **令牌(Token)机制**:在用户提交表单前,服务器生成一个唯一的令牌,将其隐藏在表单中。当表单提交时,服务器检查令牌是否已存在于session或请求中,如果存在且与提交的令牌匹配,则处理请求,否则忽略。 - *...
在Struts2中,Token插件是内建的,它提供了一种简单的方式来实现重复提交的防护。首先,需要在Struts配置文件(struts.xml)中启用Token拦截器,如下: ```xml <interceptor name="token" class=...
而Struts1.x的令牌机制(Token)则是防止重复提交、跨页请求攻击的重要手段。在此,我们将深入探讨Struts1.x令牌的使用方法及其背后的原理。 首先,理解为何需要令牌。在Web应用中,用户可能会意外或恶意地多次点击...
Struts的Token机制是Web应用中防止表单重复提交的一种常用方法。在处理表单提交时,如果用户意外地多次点击了提交按钮,可能会导致数据的重复录入,从而引起不必要的问题,例如订单重复、数据库数据异常等。为了解决...
在Struts2中,为了防止恶意的重复提交或者意外的多次点击,引入了一种安全机制——令牌(Token)机制。这个机制主要是用来解决HTTP协议无状态特性带来的问题,比如用户在提交表单时,由于网络延迟或误操作,可能会...
在Struts2中,要在表单中添加`s:token`标签,只需要在相应的JSP页面中像下面这样写: ```jsp <%@ taglib prefix="s" uri="/struts-tags" %> ... <!-- 表单内容 --> <s:token/> 提交"/> ``` 这里的`s:token`...
在Struts2中,可以通过配置Action或者全局Interceptor来启用Token插件。通常,你可以在struts.xml配置文件中添加以下内容: ```xml <interceptor name="token" class=...
为了防止这种表单重复提交,Struts提供了一种令牌(Token)机制。令牌机制的工作原理如下: 1. **设置令牌**:在用户访问表单之前,Action类中的`execute`方法会调用`saveToken`方法,将一个唯一的令牌保存在请求...
2. **令牌(Token)机制**:生成一个唯一的令牌,将其隐藏在表单中,当表单提交时,服务器验证该令牌是否有效。如果已处理过,则忽略请求。 3. **Redirect重定向**:处理完表单后,使用HttpServletResponse的`...
在Struts框架中,令牌机制(Token)是一种防止重复提交的有效方法,它主要用于处理表单数据的并发控制,防止用户意外或者恶意地多次提交表单,从而确保数据的一致性和安全性。 在Web应用中,用户可能会因为网络延迟...
本篇文章将深入探讨如何防止表单重复提交,主要关注于基于Struts2框架的解决方案。 首先,理解表单重复提交的原因。用户在点击提交按钮后,如果网络延迟或用户误操作导致页面刷新或再次点击提交,就可能发生重复...
在Struts2中,实现令牌机制主要有以下几个步骤: 1. **配置Struts2拦截器**:在struts.xml配置文件中,需要添加`token`和`tokenSession`拦截器到默认栈或自定义的拦截器栈中。`token`拦截器负责在表单中插入令牌,...