javaWEB解决表单重复提交的问题(原理)

来源:互联网 发布:php模版生成html 编辑:程序博客网 时间:2024/06/03 12:26
  1. 原文粘于
  2. http://jingyan.baidu.com/article/5d6edee20a9ae699eadeec95.html
  3. 1.新建两个文件

    index.jsp -- 表单页面

    success.jsp -- 结果提示页面

    javaWEB解决表单重复提交的问题(原理)
  4. 2

    2.代码分别如下:

    javaWEB解决表单重复提交的问题(原理)
    javaWEB解决表单重复提交的问题(原理)
  5. 3

    3.新建TokenServlet,代码如下

    javaWEB解决表单重复提交的问题(原理)
    javaWEB解决表单重复提交的问题(原理)
  6. 4

    4.运行index.jsp,输入用户名,点击提交

    javaWEB解决表单重复提交的问题(原理)
  7. 5

    5.正常跳转结果页面

    javaWEB解决表单重复提交的问题(原理)
  8. 6

    6.但当我在这个页面点击刷新的时候,出现如下提示

    javaWEB解决表单重复提交的问题(原理)
  9. 7

    7.点击重试,发现又一次调用了servlet,这就是一个重复提交

    javaWEB解决表单重复提交的问题(原理)
  10. 8

    8.多刷新几次,注意看URL地址,现在仍然是servlet

    javaWEB解决表单重复提交的问题(原理)
  11. 9

    9.以前说重定向可以解决表单重复提交的问题,我们修改Servlet代码如下

    javaWEB解决表单重复提交的问题(原理)
  12. 10.再次测试,发现重定向到了success.jsp ,再点击刷新的话也不会出现重复提交了

    javaWEB解决表单重复提交的问题(原理)
  13. 11.那问题解决了么?再看,当我点击浏览器中的返回,然后再点击提交,如此反复,仍然在重复调用Servlet,这也是重复提交

    javaWEB解决表单重复提交的问题(原理)
  14. 12.现在修改Index.jsp

    javaWEB解决表单重复提交的问题(原理)
  15. 13.修改servlet代码

    javaWEB解决表单重复提交的问题(原理)
  16. 14.新建token文件,代码如下

    javaWEB解决表单重复提交的问题(原理)
    javaWEB解决表单重复提交的问题(原理)
  17. 15.在浏览器中测试(注,这里如果再使用Eclipse自带浏览器的话,会出现缓存问题,所以使用正常的浏览器火狐或者IE)

    javaWEB解决表单重复提交的问题(原理)
  18. 16.hidden中的token 和session中的token是相同的

    javaWEB解决表单重复提交的问题(原理)
  19. 17.当点击浏览器中的后退按钮,再次进行操作,发现不能重复提交

    javaWEB解决表单重复提交的问题(原理)
    javaWEB解决表单重复提交的问题(原理)
  20. 18.这是因为session中的token已经被移除掉了

    javaWEB解决表单重复提交的问题(原理)
  21. 19.而返回后刷新页面,相当于新开一个index.jsp 重新获取token 赋值给session,这时可以正常提交了

    javaWEB解决表单重复提交的问题(原理)