Struts1防止页面重复提交解决方案

       今天介绍struts中如果防止页面重复提交。其实关于防止重复提交的方法有很多种,如果提交之后把按钮变为不可用,利用时间戳来判断两次提交的值是否为一样等。在struts中有令牌这个概念,我是这次面试问题的根本所在,这个问题的提出其实就是想知道我在用struts的时候是不是会用struts提供的令牌来解决这个方式页面重复提交的问题。

        所以在这里总结一下struts如果利用令牌来解决页面重复提交的问题的。这篇先介绍struts1框架的实现。


        1、 搭建项目(省略):主要是搭建struts1框架的项目

        2、 创建需要的类:需要一个action和一个actionForm(具体的代码可以用下面的连接进行下载)

        3、 创建需要的页面:因为一般防止重复提交的问题是在添加中才遇到的,所以需要的页面有索引页面,添加页面,添加成功页面,添加失败页面,错误页面(这个是在重复提交之后跳转的页面)

        4、 配置struts-config.xml和web.xml文件

        5、 运行、测试。


        具体程序源代码下载地址:http://download.csdn.net/detail/lfsf802/5153872

 

       具体要说的就是Action代码:

public ActionForward add(ActionMapping mapping, ActionForm form,
           HttpServletRequestrequest, HttpServletResponse response)
           throws Exception {
       this.saveToken(request);
       return mapping.findForward("showadd");
    }
    public ActionForwardinsert(ActionMapping mapping, ActionForm form,
           HttpServletRequestrequest, HttpServletResponse response)
           throws Exception {
       if (this.isTokenValid(request, true)) {
           UserFormuserForm=(UserForm)form;
           System.out.println(userForm.getUsername()+"---"+userForm.getPassword());
           return mapping.findForward("addSuccess");
       }else{
           this.saveToken(request);
           return mapping.findForward("error");
       }
      
    }


 

        这里面是从index页面调用add方法来显示添加页面,在这个过程中调用了this.saveToken(request);方法来产生令牌的,也就是在添加页面中添加一个隐含域,并且把这个隐含域的属性和值放到session中,

        当添加页面点击添加的时候调用insert方法,这时候this.isTokenValid(request, true)就会判断从页面传来的令牌和session中的令牌是否一样,当然因为是第一次,所以会相等,这样就会清空session的令牌,之后跳转到添加成功或者添加失败的页面。

          然而当我们在回退在此添加,这时候session的令牌没有了,所以令牌值会不相同,这时候就会跳到error页面,提示不能重复提交。

        在这里需要有一点是注意的,添加页面必须使用struts1的标签来进行书写,也就是用<html:text>等标签,否则它不会自动的创建令牌的。

        以上就是struts1利用令牌解决页面重复提交的问题,下一篇博客介绍struts2利用令牌解决重复提交的问题,敬请关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值