JSP token防止表单重复提交
来源:互联网 发布:法意软件价格 编辑:程序博客网 时间:2024/04/28 05:49
原理:
servlet页面代码:
1.每次请求时产生一个token(一般为时间戳),存于session中并随之用hidden提交,在servlet中判断接收到的token和session中的是否一致来判断是否重复提交,如果不是则重新产生一个 token存于session中覆盖原来的token。
2.当用户返回或者刷新重复请求servlet时,servlet判断token是否一致,由于请求方没有产生新的token,所以和servlet新产生的token不一致,认为重复提交。
3.当用户在请求页面刷新也就是重新在请求页面产生token,这时新的token覆盖servlet产生的token,这时token一致,认为是一个新的请求。
JSP页面代码
<body> <% long token=System.currentTimeMillis(); //产生时间戳的token session.setAttribute("token",token); %> <form action="isRepeat" method="post"> <input type="text" name="username"/> <input type="text" name="password"/> <input type="hidden" value="<%=token %>" name="token"/> <!-- 作为hidden提交 --> <input type="submit" value="提交"/> </form></body>
接口代码:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html,charset=utf-8"); String username=req.getParameter("username"); String password=req.getParameter("password"); long token=Long.parseLong(req.getParameter("token")); long tokenInSession=Long.parseLong(req.getSession().getAttribute("token")+""); if(token==tokenInSession){ resp.getWriter().println("ok "); //如果是第一次请求,则产生新的token req.getSession().setAttribute("token", System.currentTimeMillis()); } else { resp.getWriter().println("do not repeat submit"); } }
阅读全文
0 0
- JSP token防止表单重复提交
- token防止表单重复提交
- token-防止表单重复提交
- struts2防止表单重复提交 token
- struts2之防止表单重复提交 token
- 《struts---利用Token防止表单重复提交》
- 运用session token防止表单重复提交
- session token 防止表单重复提交
- php表单加入Token防止重复提交
- structs2 防止表单的重复提交token
- <s:token/>防止表单重复提交
- Struts2利用token防止表单重复提交
- PHP利用token防止表单重复提交
- SpringMVC token 防止表单重复提交
- Struts2<s:token>防止表单重复提交
- 使用token防止表单重复提交
- Sping MVC Token防止表单重复提交
- sturts2 token防止表单重复提交
- Server Locations 灰色无法编辑的问题。
- Android studio和Eclipse生成的apk位置
- HTMl5的sessionStorage和localStorage
- 前端动画渲染引擎pixi.js系列(9)如何生成缩略图
- 嵌入式系统学习——STM32之按键输入
- JSP token防止表单重复提交
- SPOJ DQUERY 莫队 做法
- 解读今年的 Google IO 2017
- 建造者模式(Builder)
- [shell]shell脚本-求和&参数处理等
- Python-sklearn机器学习的第一个样例(3)
- 底部导航栏 BottomNavigationBar的使用
- Mvp+RxJava+Retrofit入门教程
- React-Native高校图书馆APP