读书人

Struts1.x 重复提交辨析

发布时间: 2012-10-27 10:42:26 作者: rapoo

Struts1.x 重复提交剖析
在某些情况下,如果用户对一个HTML表单重复提交,Web应用应该必须能够判断用户的重复提交行为,以做相应的处理。

Struts给出了一个参考实现。org.apache.struts.action.Action类中提供了一系列和Token有关的方法:


在这里会自动生成Token的隐藏域:


Action2: jsp页面提交给过来请求

 if(!isTokenValid(request))    {               System.out.println("重复提交TokenAction");               saveToken(request);               return (new ActionForward(mapping.getInput()));    }    else   {               resetToken(request);               System.out.println("重新设置Token!   TokenAction");    }   if(!isTokenValid(request)){    System.out.println("重复提交TokenAction");    saveToken(request);    return (new ActionForward(mapping.getInput()));}else{    resetToken(request);    System.out.println("重新设置Token!   TokenAction");}
判断是否是重复提交,如果重复提交就转发到默认在struts-config.xml中为Action2配置的错误页面中,并重新建立一个Token。如果不是重复提交就就从当前session中删除Token.
OK,就是这些了,如果你的应用中可以返回一个错误页面,那么你也可以在filter中应用Token这些方法,只不过需要对struts的jar包进行反编译,拿到自己的类中来用。

读书人网 >软件架构设计

热点推荐