文档章节

Struts2----><s:token />标签防止重复提交

小强斋太
 小强斋太
发布于 2016/11/09 20:08
字数 434
阅读 4
收藏 0

一、防止重复提交原理:
首先
,在页面访问的时候server端产生一个标志位,其保存在session中,同时该标志位放到访问的页面的某个元素中(通常为隐藏域);
其次,在session存在的有效时间内,没有其它操作时其值保持不变,当提交表单到server端时,会判断client端提交过来的标志位和server端的标志位的值是否相等;
最后,判断标志位的值,如果相等,则执行自己期望的操作;如果不相等,则转向指定的页面;

1、JSP使用< s:token/ >标签的时候,Struts2会建立一个UUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中。 如

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

2、token拦截器会判断客户端form提交的token值和session中保存的值是否equals。如果equals则执行Action。否则拦截器直接返回invaid.token结果转向对应的视图,Action对应的方法也不会执行;

二、例子

input.jsp(方法为get时候,刷新浏览器不提示重新发送,可能会重复提交)

<form action="user" method="get">
    	name:<input name="name">
    	age:<input name="age">
    	<input type="submit" value="add">
    	<s:token></s:token>
    </form><br>

上面的form对应页面生成的源代码(右键,查看源代码)

<body>
    <form action="user" method="get">
    	name:<input name="name">
    	age:<input name="age">
    	<input type="submit" value="add">
    	<input type="hidden" name="struts.token.name" value="struts.token" />
<input type="hidden" name="struts.token" value="DP6WFZ8K88OA7FBT15A7V73VJRZ9KXQA" />
    </form><br>
  </body>

struts.xml

<struts>
	<constant name="struts.devMode" value="true"></constant>
	<package name="test" namespace="/" extends="struts-default">

		<action name="input" class="com.bjsxt.action.InputAction">
			<result>/input.jsp</result>
		</action>

		<action name="user" class="com.bjsxt.action.UserAction">
			<result>/addOK.jsp</result>
			<interceptor-ref name="defaultStack"></interceptor-ref>
			<interceptor-ref name="token"></interceptor-ref>
			<result name="invalid.token">/error.jsp</result>
		</action>

	</package>


 

 

本文转载自:http://www.cnblogs.com/xqzt/archive/2012/09/03/5637197.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
表单重复提交处理总结

一、重复提交的处理方式 1.在进行请求之后重定向到查询或者其他不操作数据库的请求 2.将页面事件执行的按钮置灰,防止重复点击触发请求 3.自定义设置token,在请求之前将随机的token值放入s...

liuxw0226
2015/12/22
147
0
struts2防止重复提交

用户重复提交表单在某些场合将会造成非常严重的后果。例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消...

李永china
2016/05/16
13
0
为什么struts2中配置token后,第一次访问就告诉我已经提交过

我需要删除一些用户信息,避免删除重复提交,就用struts2的标签,但是,我只要进入到有在加标签的jsp中,点击注册了监听方法的按钮,就会说我是重复提交。郁闷死我了,求高手帮忙解决啊!具体...

www520507
2012/03/16
1K
0
struts2令牌(token)内部原理

小菜最近接触了struts2中的令牌知识,由于该知识点比较重要,因此想弄明白些,于是满怀信心的上网查阅资料,结果让小菜很无奈,网上的资料千篇一律,总结出来就一句话:“访问页面时,在页面...

thinkyoung
2014/12/17
0
0
struts--token防止表单重复提交(源码分析)

表单重复提交 1、造成重复提交主要的两个原因: (1) 一是,服务器处理时间久。当用户在表单中填完信息,点击“提交”按钮后,由于服务器反应时间过长没能及时看到响应信息,或者出于其它目...

cookqq
2012/11/28
0
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

InvalidKeyException: Illegal key size

Caused by: java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size 解决方案:去官方下载JCE无限制权限策略文件。 jdk 5: http://www.oracle.com/technetwork/j......

自由的开源
19分钟前
0
0
JAVA秒杀实现以及优化原理

秒杀与其他业务最大的区别在于:秒杀的瞬间, (1)系统的并发量会非常的大 (2)并发量大的同时,网络的流量也会瞬间变大。 关于(2),最常用的办法就是做页面静态化,也就是常说的前后端分...

小贱是个程序员
23分钟前
1
0
Spring Aop之Advisor解析

在上文Spring Aop之Target Source详解中,我们讲解了Spring是如何通过封装Target Source来达到对最终获取的目标bean进行封装的目的。其中我们讲解到,Spring Aop对目标bean进行代理是通过Ann...

爱宝贝丶
25分钟前
0
0
Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点

前言: 分享 Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点,文章有点长,但比较全面,阅读时间15分钟左右,干货满满。 一、HashMap的那些事 1.1、HashMap的实现原理 1.1.1、...

Java大蜗牛
50分钟前
2
0
nginx模块学习五 expires 浏览器缓存

缓存原理 语法 Syntax: expires [modified] time;expires epoch | max | off;Default: expires off;Context: http,server,location,if in location 例/etc/nginx/conf.d/default.con......

Romanceling
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部