java

位置:IT落伍者 >> java >> 浏览文章

struts利用Token防止用户重复提交


发布日期:2022年02月24日
 
struts利用Token防止用户重复提交
struts如何利用Token(令牌)防止用户重复提交?在我们的开发中经常遇到需要防止用户重复提交的情况如果你用了struts恭喜你因为struts已经给你做好了你只要会调用即可

Token如何使用呢?请看下例

在跳转到页面前的action方法中写

public ActionForward toAddUser(ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response) throws Exception {

thissaveToken(request)

return mappingfindForward(addUser

}

以上的thissaveToken(request)会在将要跳转到的addUserjsp页面上生成一个

<input type=hidden name=orgapaclTOKEN value=dccecfcca>

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

public ActionForward addUser(ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response) throws Exception {

if( ! thisisTokenValid(requesttrue)){

requestsetAttribute(info 请不要刷新!

return mappingfindForward(backInfo

}

boaddUser() ;

return mappingfindForward(viewUser //添加完后显示用户资料

}

当用户填写完信息第一次提交调用addUser方法时咱们看一下其中的thisisTokenValid(requesttrue)都做了些什么

把从页面传来的orgapaclTOKEN的值和session中的orgapaclTOKEN值比较

如果值是相等的(这时的值是相等)会清除session中的该令牌继续执行boaddUser() 后跳转到addUserjsp页面

当用户后退到该页面点提交程序依然会对从页面来的与session中的orgapaclTOKEN的值进行比较由于在第一次提交时已经清除了该令牌所以struts就知道这时的用户

正在进行重复提交故执行

requestsetAttribute(info 请不要刷新!

return mappingfindForward(backInfo

上一篇:Web框架对比: Wicket vs Struts

下一篇:在Eclipse 3.1体验J2SE 5.0新特性六