ITKeyword,专注技术干货聚合推荐

注册 | 登录

struts利用Token(令牌)防止用户重复提交(转载)

pengzhuo1 分享于 2010-02-06

推荐:利用Token防止重复提交(Struts框架)

利用Token防止重复提交(Struts框架)   如果用户对一个html表单多次提交,web应用应该能够判断用户的重复提交行为,并作出相应的处理。    最常见的是新增一条数

2020腾讯云共同战“疫”,助力行业复工(优惠前所未有!),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1053

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

struts利用Token(令牌)防止用户重复提交(原创) 

在我们的开发中经常遇到需要防止用户重复提交的情况,如果你用了struts,恭喜你,因为struts已经给你做好了,你只要会调用即可:
在跳转到页面前的action方法中写:
public ActionForward toAddUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
      
       this .saveToken(request);        return mapping.findForward( "addUser" );
}
以上的 this.saveToken(request),会在将要跳转到的"addUser.jsp"页面上生成一个

<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="38912d4c87ce950cf6c159411c0a4966">

的隐藏字段,value值是随机生成的,并且同时把该属性和值放到Session中。

public ActionForward addUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
      
       if ( ! this .isTokenValid(request, true )) {
           request.setAttribute( "info" , "请不要刷新! " );
           return mapping.findForward( "backInfo" );        }          bo.addUser() ;          return mapping.findForward( "addUser" );
    }
当用户填写完信息第一次提交,调用"addUser"方法时,咱们看一下,其中的" this.isTokenValid(request, true)"都做了些什么:
把从页面传来的org.apache.struts.taglib.html.TOKEN的值和session中的org.apache.struts.taglib.html.TOKEN值比较,
如果值是相等的(这时的值是相等),会清除session中的该令牌。继续执行bo.addUser() 后跳转到"addUser.jsp"页面。
当用户后退到该页面,点提交,程序依然会对从页面来的与session中的org.apache.struts.taglib.html.TOKEN的值进行比较,由于在第一次提交时已经清除了该令牌,所以struts就知道这时的用户
正在进行重复提交,故执行:
request.setAttribute("info", "请不要刷新!");
return mapping.findForward( "backInfo" );

推荐:Struts的Token(令牌)机制解决表单重复提交的问题

Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令

struts利用Token(令牌)防止用户重复提交(原创)  在我们的开发中经常遇到需要防止用户重复提交的情况,如果你用了struts,恭喜你,因为struts已经给你做好了,你只要会调用即可: 在跳转到页

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。