Struts2 防止表单的重复提交

今天去参加一个面试,面试官问了我这样一个问题:struts2中如何防止表单的重复提交?当我听到这个问题时,整个人都蒙了,脑子里一片空白。还好这不是考试,咱还有补考的机会。遇到问题不可怕,可怕的是你第二次遇到的时候,它还是个问题。好吧,现在我就简要的分析一下:

 

 Struts 2已经内置了能够防止用户重复提交同一个HTML表单的功能。它的工作原理:让服务器生成一个唯一标记,并在服务器和表单里各保存一份这个标记的副本。此后,在用户提交表单的时候,表单里的标记将随着其他请求参数一起发送到服务器,服务器将对他收到的标记和它留存的标记进行比较。如果两者匹配,这次提交的表单被认为是有效的,服务器将对之做出必要的处理并重新设置一个新标记。随后,提交相同的表单就会失败,因为服务器上的标记已经重置。

    Struts 2标签中的token标签,可以用来生成一个独一无二的标记。这个标记必须嵌套在form标签中使用,它会在表单里插入一个隐藏字段并把标记保存到HttpSession对象里。toke标签必须与Token或Token Session拦截器配合使用,两个拦截器都能对token标签进行处理。Token拦截器遇到重复提交表单的情况,会返回一个"invalid.token"结果并加上一个动作级别的错误。Token Session拦截器扩展了Token拦截器并提供了一种更复杂的服务,它采取的做法与Token拦截器不同,它只是阻断了后续的提交,这样用户不提交多少次,就好像只是提交了一次。

 

这些是我在网上查的,仅供参考!

猜你喜欢

转载自lylan.iteye.com/blog/1974911
今日推荐