表单的重复提交一直都是一个比较困扰人的问题,下面是struts2采用Token令牌的方式的来避免重复提交。
有表单的页面,也就是将要提交表单的那个页面,需用struts2自己的标签,要使用struts2的标签,当然是要在jsp文件的开头加上:
然后就可以用他的标签了、
现在以一个最基本的表单来示范:
注意上面的表单,为一个亮点就是多加了<s:token></s:token>这个标签。这就是struts2封装好了的,查看他的源代码可以看到:
呵呵,有多了个隐藏域、这应该就是重点了。我们不妨假设,struts2这个<s:token></s:token>的原理,应该就和那个value随机数有关。
接下来,为了测试,新建两个jsp页面。
刚刚提交时,转到tokenSuccess.jsp。
假设表单重复提交,则转到:tokenFail.jsp。
然后,最重要的一步:(当然还是我们struts2的核心配置文件struts.xml文件了)
注意上面的代码,较平时多出了两句:
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
这个是struts2的拦截器、
java文件没有什么特殊的,随便的生成get,set方法。再在execute方法中return SUCCESS; 即可了。
分享到:
相关推荐
例如,当用户在长时间未操作后再次提交表单,可能需要清除旧的token,避免误报重复提交。此外,对于并发请求,需要确保并发处理的安全性,防止因并发导致的重复提交。 总结,Struts2的tokenSession机制是JavaEE Web...
当用户尝试重复提交表单时,Struts2会检测到Token已经使用过,因此会抛出异常。你可以捕获这个异常并给出相应的提示,例如: ```java public class MyAction extends ActionSupport { @Override public void ...
在Struts框架中,令牌机制(Token)是一种防止重复提交的有效方法,它主要用于处理表单数据的并发控制,防止用户意外或者恶意地多次提交表单,从而确保数据的一致性和安全性。 在Web应用中,用户可能会因为网络延迟...
当用户提交表单时,服务器会检查提交的Token值是否与Session中的Token值匹配,如果匹配则处理请求,否则视为无效请求并忽略。 ### 二、Struts2 Token插件配置 1. **启用Token插件**:在Struts2的配置文件`struts....
当用户提交表单时,Token拦截器会检查提交的令牌是否与session中的令牌匹配,如果匹配则认为请求有效,否则抛出异常。 3. **处理异常:** 当出现重复提交或令牌不匹配的情况,Token拦截器会抛出`TokenException`。...
Struts2框架提供了一种令牌验证的方式来确保每个表单提交是唯一的,避免了恶意用户通过重复提交数据来执行非预期的操作。 **一、Struts2 Token机制** 1. **令牌生成**:当用户访问一个需要防护的表单页面时,...
客户端在提交表单时会携带这个令牌,服务器端验证令牌的正确性,如果验证通过则处理请求,否则拒绝。 **Struts2中的Token插件** 在Struts2中,Token插件是内建的,它提供了一种简单的方式来实现重复提交的防护。...
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
2. 实现TokenAware接口:为了让ActionForm能够访问session中的令牌,需要让ActionForm实现`org.apache.struts.action.TokenAware`接口,并实现`setToken(String token)`方法。 3. 生成令牌:在Action中,如`execute...
当用户首次提交表单时,服务器会生成一个随机的、唯一标识的Token,并将其存储到用户的会话(Session)中,同时将该Token放入到表单隐藏字段中。当用户提交表单时,服务器会检查提交过来的Token是否与Session中的...
这样,即使用户再次提交表单,由于Session中的Token已被删除,验证将会失败,从而避免了重复提交。 5. **错误处理**: 如果验证失败,服务器可以返回一个错误提示,告知用户请求可能已处理,无需再次提交。 在...
当用户提交表单时,服务器会生成一个唯一的Token,并将其存储在一个临时的会话属性中,同时将其返回给客户端(通常是隐藏在表单中)。客户端再次提交表单时,会将这个Token一起发送回服务器。服务器验证Token的有效...
Struts2提供了一种称为“令牌”或“Token Session”的机制来解决这个问题。 令牌机制的工作原理是,在用户提交表单前,服务器会生成一个唯一的令牌,并将其添加到表单中隐藏字段或者放入session。当用户提交表单时...
为了避免这种情况,Struts2引入了令牌机制。 令牌机制的工作原理是:在用户发起表单请求时,服务器会生成一个随机的、唯一的令牌,并将其存储在用户的会话(session)中,同时将该令牌作为隐藏字段包含在表单中。当...
在表单提交过程中,服务器会将Token附加到表单中,当客户端提交表单时,服务器会验证这个Token是否有效且未被使用过。 1. **Token的生成**: 在Struts的Action中,我们可以创建一个Token并将其存储到用户的Session...
1. **表单重复提交问题**:当用户在提交表单时,由于网络延迟或用户误操作,可能会导致同一个表单被多次提交。例如,在购物网站上,用户可能因点击按钮太快而无意中购买了多份商品。 2. **Struts2框架**:Struts2是...
2. **提交表单时验证Token**:当用户提交表单时,服务器会检查提交的数据中是否包含有效的Token。如果Token无效或者不存在,则拒绝此次提交。 下面通过具体的示例代码来看如何在Struts中实现这一机制: #### 四、...
对于第二种原因,即提交表单后刷新浏览器页面导致的重复提交,Struts2框架允许开发者通过配置结果视图的跳转方式来解决。默认情况下,Struts2使用的是dispatcher类型的forward跳转。为了避免刷新页面导致的重复提交...
2. **传递Token**:这个Token会随着表单一起发送到客户端,用户提交表单时,这个Token也会一起被提交回服务器。 3. **验证Token**:服务器接收到表单提交后,首先检查Token的有效性。如果Token存在于session中且与...
当用户提交表单时,处理表单提交的Action类会调用`isTokenValid`方法来验证同步令牌的有效性。如果验证通过,则认为此次提交是有效的;否则,认为是重复提交,通常会返回错误页面或消息。相关代码如下: ```java ...