Struts2中防止页面重复提交
2012-08-15 17:52
246 查看
struts2中如何防止页面重复提交的问题,在这里我采用struts2自带的token令牌机制,废话补多少,直接上例子:
1.jsp页面。
<s:form action="register.action" method="post" >
<div>
<p>
<s:token></s:token>
<span>用户名:</span>
<span><input type="text" name="userName" /></span>
</p>
<p>
<span>密码:</span>
<span><input type="password" name="password" /></span>
</p>
<p>
<span><input type="submit" value="提交" /></span>
</p>
</div>
</s:form>
2.Register.java
<s:form action="register.action" method="post" >
<div>
<p>
<s:token></s:token>
<span>用户名:</span>
<span><input type="text" name="userName" /></span>
</p>
<p>
<span>密码:</span>
<span><input type="password" name="password" /></span>
</p>
<p>
<span><input type="submit" value="提交" /></span>
</p>
</div>
</s:form>
3.struts配置文件
1).使用Token
<action name="register" class="wsp.struts.action.RegisterAction">
<!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面 -->
<exception-mapping result="error" exception="java.lang.Exception"/>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token"></interceptor-ref>
<!--如果重复提交也不跳转到error.jsp页面-->
<result name="invalid.token">error.jsp</result>
<result name="reginput">/error.jsp</result>
<result name="regsuccess">/success.jsp</result>
</action>
2).使用TokenSession
<action name="register" class="wsp.struts.action.RegisterAction">
<!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面 -->
<exception-mapping result="error" exception="java.lang.Exception"/>
<interceptor-ref name="defaultStack" />
<interceptor-ref name="tokenSession" />
<!-- 如果重复提交,不会跳转到error.jsp页面 -->
<result name="invalid.token">error.jsp</result>
<result name="reginput">/error.jsp</result>
<result name="regsuccess">/success.jsp</result>
</action>
4.Token和TokenSession的比较
TokenSession的页面展示会更友好一些
5.Token实现控制表单重复提交的原理
当token拦截到用户的请求后,会判断在表单中生成的token的id也就是数字和英文组成
和保存在session(服务器端)的id是否相等如果相等就是地址提交。那么这个拦截器会将存放在session服务器端的session id值做一下变更
做变更后用户在点击刷新按钮,重复提交。拦截器会检查出来session id和用户提交的token id是不一样的,这个时候拦截器就会将这个请求发送到名字为invalid.token的视图,在这个试图上配置上页面就可以了。
1.jsp页面。
<s:form action="register.action" method="post" >
<div>
<p>
<s:token></s:token>
<span>用户名:</span>
<span><input type="text" name="userName" /></span>
</p>
<p>
<span>密码:</span>
<span><input type="password" name="password" /></span>
</p>
<p>
<span><input type="submit" value="提交" /></span>
</p>
</div>
</s:form>
2.Register.java
<s:form action="register.action" method="post" >
<div>
<p>
<s:token></s:token>
<span>用户名:</span>
<span><input type="text" name="userName" /></span>
</p>
<p>
<span>密码:</span>
<span><input type="password" name="password" /></span>
</p>
<p>
<span><input type="submit" value="提交" /></span>
</p>
</div>
</s:form>
3.struts配置文件
1).使用Token
<action name="register" class="wsp.struts.action.RegisterAction">
<!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面 -->
<exception-mapping result="error" exception="java.lang.Exception"/>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token"></interceptor-ref>
<!--如果重复提交也不跳转到error.jsp页面-->
<result name="invalid.token">error.jsp</result>
<result name="reginput">/error.jsp</result>
<result name="regsuccess">/success.jsp</result>
</action>
2).使用TokenSession
<action name="register" class="wsp.struts.action.RegisterAction">
<!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面 -->
<exception-mapping result="error" exception="java.lang.Exception"/>
<interceptor-ref name="defaultStack" />
<interceptor-ref name="tokenSession" />
<!-- 如果重复提交,不会跳转到error.jsp页面 -->
<result name="invalid.token">error.jsp</result>
<result name="reginput">/error.jsp</result>
<result name="regsuccess">/success.jsp</result>
</action>
4.Token和TokenSession的比较
TokenSession的页面展示会更友好一些
5.Token实现控制表单重复提交的原理
当token拦截到用户的请求后,会判断在表单中生成的token的id也就是数字和英文组成
和保存在session(服务器端)的id是否相等如果相等就是地址提交。那么这个拦截器会将存放在session服务器端的session id值做一下变更
做变更后用户在点击刷新按钮,重复提交。拦截器会检查出来session id和用户提交的token id是不一样的,这个时候拦截器就会将这个请求发送到名字为invalid.token的视图,在这个试图上配置上页面就可以了。
相关文章推荐
- 采用struts2防止重复提交后无法采用request.getParameter("xxx")得到页面隐藏框值解决方案
- struts2 防止页面重复提交
- Struts2 防止页面表单重复提交
- struts2防止页面重复提交的解决方案
- struts2防止页面重复提交的解决方案
- struts2_大纲09_token防止表单重复提交
- ASP.Net中防止页面刷新重复提交的几种方法
- 拦截器springmvc防止表单重复提交【3】3秒后自动跳回首页【重点明白如何跳转到各自需要的页面没有实现 但是有思路】
- Struts2防止表单重复提交
- 2012年笔记-Struts2使用token标签防止重复提交
- 使用Struts2防止表单重复提交
- Struts2 <s:token>防止表单重复提交 %{}
- struts2 防止刷新重复提交
- 【struts2】struts防止表单重复提交源码分析
- Struts2_tokey_防止表单重复提交
- asp.net清除页面缓存,防止页面回退重复提交数据及防止同一用户同时登录
- 使用token来防止页面重复提交
- Struts2利用token防止表单重复提交
- struts2 防止表单重复提交
- PHP 脚步页面防止重复提交