struts2_防止表单重复提交
来源:互联网 发布:python 连接informix 编辑:程序博客网 时间:2024/06/05 19:14
1. 什么是表单重复提交?
表单重复提交是:假如用户的网速慢的时候,用户点击了提交按钮,却因为网速慢,而没有跳转到新的页面,这时的用户会再次点击提交按钮,举个例子:用户点击的是订单页面,当点击提交按钮的时候,也许因为网速的原因,没有跳转到新的页面,这时的用户会再次点击提交按钮,如果没有经过处理的话,这时用户就会生成两种订单了,很明显这是不符合规则的。
2. 表单重复提交的危害
表单重复提交带来很多危害或者是隐患,比如:刷票、 重复注册、攻击服务器、带来服务器访问压力(拒绝服务)等等。
3. 解决表单重复提交的思路?
在页面上生成一个令牌(其实就是随机字符串),将其存储到session中,并在表单中携带。在服务器端,获取数据时,也将令牌获取,将它与session中的令牌进行对比,没问题的话,就将session中的令牌删除。
4. struts2如何解决表单重复提交
在struts2中解决表单重复提交,可以使用它定义的一个interceptor(拦截器)。
<interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/>
步骤:1.在页面上需要使用一个token tag在表单中添加一个标签 <s:token/>就会在页面上生成一个令牌,并存在于表单中。2.需要在action中引入token拦截器 <interceptor-ref name="token"/>3.需要配置视图 <result name="invalid.token">/token.jsp</result>当表单重复提交时,token拦截器自动跳转result name="invalid.token"通过 <s:actionError/> 显示错误信息 覆盖重复提交信息 struts.messages.invalid.token=您已经重复提交表单,请刷新后重试============================实例===============================JSP页面上:<form action="${pageContext.request.contextPath}/regist.action" method="get"> <s:token/> username:<input type="text" name="username"><br> password:<input type="password" name="password"><br> <input type="submit" value="注册"></form>struts.xml中的配置:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="default" namespace="/" extends="struts-default"> <action name="regist" class="cn.itcast.action.RegistAction"> <result name="invalid.token">/token.jsp</result> <interceptor-ref name="token" /> <interceptor-ref name="defaultStack" /> </action> </package></struts>
阅读全文
0 0
- struts2_防止表单重复提交
- Struts2_防止表单重复提交
- struts2_大纲09_token防止表单重复提交
- Struts2_表单重复提交问题
- Struts2_防表单重复提交
- 28.struts2_表单重复提交
- 防止表单重复提交
- 防止重复提交表单
- 防止表单重复提交
- 防止表单重复提交
- 防止表单重复提交
- 防止表单重复提交
- 防止表单重复提交
- 防止表单重复提交
- 防止表单重复提交
- 防止重复提交表单
- 防止表单重复提交
- 表单防止重复提交
- 网址生成二维码草料
- HDU 5531 Rebuild(三分)——2015ACM/ICPC亚洲区长春站
- JS按回车键实现登录的方法
- C++下的String类
- 终极报错解决方案:Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with
- struts2_防止表单重复提交
- UNIX编程专题-core文件的生成和调试
- jzoj P2150【2017.7.7普及】和谐数
- aosp framework子目录解析
- java面向对象、构造方法 之内部类
- 自定义控件
- Handler消息机制的写法
- CentOS 7 环境开发PHP项目常常会用到的指令
- firewall常用命令