表单的重复提交一直都是一个比较困扰人的问题,下面是struts2采用Token令牌的方式的来避免重复提交。
有表单的页面,也就是将要提交表单的那个页面,需用struts2自己的标签,要使用struts2的标签,当然是要在jsp文件的开头加上:
<%@ taglib prefix="s" uri="/struts-tags" %>
然后就可以用他的标签了、
现在以一个最基本的表单来示范:
<s:form action="token" theme="simple">
username:<s:textfield name="username"></s:textfield><br/>
password:<s:password name="password"></s:password><br/>
<s:token></s:token>
<s:submit></s:submit>
</s:form>
注意上面的表单,为一个亮点就是多加了<s:token></s:token>这个标签。这就是struts2封装好了的,查看他的源代码可以看到:
<form id="token" name="token" action="/strut2_302_token/token.action;jsessionid=946434B84A81E5B277DC0DE907204923" method="post">
username:<input type="text" name="username" value="" id="token_username"/>
<br/>
password:<input type="password" name="password" id="token_password"/><br/>
<input type="hidden" name="struts.token.name" value="struts.token" />
<input type="hidden" name="struts.token" value="33T962IU08J88WEQWZ9WMSNXWYCQU11P" />
<input type="submit" id="token_0" value="Submit"/>
</form>
呵呵,有多了个隐藏域、这应该就是重点了。我们不妨假设,struts2这个<s:token></s:token>的原理,应该就和那个value随机数有关。
接下来,为了测试,新建两个jsp页面。
刚刚提交时,转到tokenSuccess.jsp。
假设表单重复提交,则转到:tokenFail.jsp。
然后,最重要的一步:(当然还是我们struts2的核心配置文件struts.xml文件了)
<package name="login" extends="struts-default" namespace="/">
<action name="token" class="com.guang.struts2.token">
<result name="success">/tokenSuccess.jsp</result>
<result name="invalid.token">/tokenFail.jsp</result>
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
注意上面的代码,较平时多出了两句:
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
这个是struts2的拦截器、
java文件没有什么特殊的,随便的生成get,set方法。再在execute方法中return SUCCESS; 即可了。
分享到:
相关推荐
JavaEE Struts2利用tokenSession防止重复提交
struts2中token限制表单多次提交
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
struts2的token实现.
struts2_token控制刷新重复提交
简单的struts2令牌token实例 方便应用 不懂token也可以参考学习 主要用于解决重复提交的问题
详解struts2的token机制和cookie来防止表单重复提交 今天在做一个投票系统时要实现防止表单重复提交! 当时就想到了用struts2提供的token机制 struts2的token机制防止表单重复提交: 首先需要在提交的jsp页面(要...
NULL 博文链接:https://finally-m.iteye.com/blog/360648
测试的过程中,经常会有这样的疑惑,什么是Cookie,什么是Session什么是Token,三者的区别又是什么,又是怎么使用的呢,这个文档跟大家详细介绍下三者的区别与使用
在struts 中可以通过token 来解决重复提交的问题。
struts token机制解决表单重复提交
主要讲解了在structs怎样通过Token令牌解决表单重复提交的问题。附带了擦参考项目。
Struts1.x令牌(Token)的使用.rar
struts2token回退刷新
C#WEB用户令牌TOKEN验证,防止HTTP、GET、POST等提交包含服务端和客户端源码。Nginx集群,SSL证书的WebApi令牌验证
详细介绍struts+token机制解决表单重复提交问题。附带相关代码
struts2 令牌使用例子 直接导入使用
一、理解Struts2拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. 拦截器栈(Interceptor Stack)。Struts2...
Struts 之旅 - 重复提交 token
这里是Struts2 中放置表单重复提交的例子。