总结 15/4/27

表单重复提交

1.什么是表单重复提交

在不刷新表单页面的情况下:

  》多次点击提交按钮

  》已经提交成功,按"回退"之后,再点击"提交按钮"

  》在控制器响应页面的形式为转发情况下,若已提交成功,然后几点刷新(或者F5)

注意:》若刷新表单页面,再提交表单不算是重复提交

   》若使用的是redirect的响应类型,已经提交成功后,再点击刷新不算重复提交

表单重复提交的危害:

  》加重服务器负担

  》可能导致错误操作

struts2 解决表单重复提交问题

1.在s:form中添加s:token 子标签

  》生成一个隐藏域

  》在session 添加一个属性值

  》隐藏域中的值和session中的属性值是一致的。

2.使用Token或TokenSession拦截器

  》这两个拦截器均不在默认的拦截器栈中,所以需要手工配置

  》若使用Token拦截器,则需要配置一个token.valid 的 result

  》若使用TokenSession拦截器,则不需要配置任何其他的result

3.使用Token或TokenSession拦截器的区别

  》都是解决表单重复提交问题

  》使用Token拦截器会转到token.valid 这个 result

  》使用TokenSession 拦截器则还会响应那个目标页面,但不会执行目标TokenSession的后续拦截器,好像什么都没发生一样!

4.注意使用s:actionerror标签来显示重复提交的错误消息,改错误消息可以在国际化资源文件中覆盖

原文地址:https://www.cnblogs.com/yydeyi/p/4460708.html