菜鸟小项目_避免表单重复提交与等待页面

表单的重复提交是指用户对同一个请求信息多次单击提交按钮或者执行刷新操作,导致该请求信息向服务器提交多次,如果应用程序没有对表单的重复提交进行处理,则当请求信息需要保存到数据库中时就会出现重复的记录,或者由于字段的唯一性而导致添加数据的操作出现异常!!

下面利用token拦截器实现对重复提交表单的处理
步骤:
1、新建register.jsp

[plain]  view plain  copy
  1. <font color="red"><s:actionerror/></font>  
  2.     
  3.   <body>  
  4.     <form action="tokenaction" method="post">  
  5.         <s:token></s:token>  
  6.         <s:textfield name="username" label="用户名" size="15"></s:textfield><br/>  
  7.         <s:password name="password" label="密码" size="15"></s:password><br/>  
  8.         <input type="submit" value="提交">  
  9.         <s:submit></s:submit><br/>  
  10.     </form>  
  11.   </body>  


2、新建action
[plain]  view plain  copy
  1. public class tokenAction extends ActionSupport {  
  2.     private String username;  
  3.     private String password;  
  4.     public String getUsername() {  
  5.         return username;  
  6.     }  
  7.     public void setUsername(String username) {  
  8.         this.username = username;  
  9.     }  
  10.     public String getPassword() {  
  11.         return password;  
  12.     }  
  13.     public void setPassword(String password) {  
  14.         this.password = password;  
  15.     }  
  16. @Override  
  17.     public String execute() throws Exception {  
  18.         return SUCCESS;  
  19.     }  

3、配置struts.xml

[plain]  view plain  copy
  1. <struts>  
  2.     <package name="default" extends="struts-default">  
  3.         <action name="tokenaction" class="com.token.tokenAction">  
  4.             <interceptor-ref name="token"></interceptor-ref> //引用token拦截器  
  5.             <interceptor-ref name="defaultStack"></interceptor-ref>  
  6.             <!-- <interceptor-ref name="execAndWait"></interceptor-ref> -->//这个是等待页面拦截器,这里我没有使用,有点问题  
  7.             <result>/success.jsp</result>  
  8.             <result name="invalid.token">/register.jsp</result> //token拦截器在遇到重复提交的情况下会返回<span style="font-family: Arial, Helvetica, sans-serif;">invalid.token结果和一个动作错误</span><pre name="code" class="plain">  
//这个错误的默认内容是 The form has already been processed or no token was supplied, please try again

<!-- <result name="wait">/wait.jsp</result>--></action></package></struts>
 
  

4、新建success.jsp

[plain]  view plain  copy
  1. 用户信息如下:<br>  
  2.     用户名:<s:property value="username"/><br/>  
  3.     密码  : <s:property value="password"/><br/>  
  4.   </body>  

上面遇到的等待页面的问题是
1、在引用了execAndWait拦截器后,跳转到了wait.jsp后不知道怎么在等待一段时间后自动转到success页面(待解决)
2、token拦截器究竟是怎么工作的?
上面两个问题解决后,再贴后面,如果有知道的朋友,可以留言,我是菜鸡,我在努力,谢谢大笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值