创建一个新的令牌,并把它保存在当前session范围内.如果HttpSession不存在,就首先创建一个HttpSession对象.
如何利用上述方法应用令牌机制解决重复提交问题:
以用户注册为例:
在用户请求newUser.jsp之前,首先把请求转发到PrepareAction,PrepareAction 调用saveToken方法,创建一个新的令牌,并将令牌值保存在当前HttpSession中(新创建的),PrepareAction接着把请求转发给newUser.jsp.
newUser.jsp中的<html:form>标签自动判断在session范围内是否存在Token,如果存在,就自动在表单中生成一个包含Token信息的隐藏字段,例如:
<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="....">
在用户提交表单后,由InsertUserAction处理请求.在InsertUserAction中,调用isTokenValid方法,判断当前用户会话中的令牌值和请求参数中的令牌值是否匹配.如果匹配,就调用resetToken方法,删除Token,然后执行插入数据操作.如果不匹配,返回相关错误提示,进行相关操作.
OK.这样就可以有效放置重复提交了.
Action中的saveToken方法
最新推荐文章于 2019-04-11 16:49:16 发布