JavaWeb Session 之表单的重复提交
来源:互联网 发布:mac 彻底删除office 编辑:程序博客网 时间:2024/05/22 10:47
原作者:尚硅谷-佟刚
1.表单的重复提交
1).表单重复提交的情况
①.在表单提交到一个Servlet,而Servlet又通过请求转发的方式响应一个JSP(HTML)页面,
此时地址栏还保留着Servlet的那个路径,在响应页面”刷新”.
②.在响应页面还没有到达时重复点击”提交按钮”.
③.点击”返回”,再点击”提交”.
注意:不是重复提交的情况:点击”返回” ,”刷新”原表单页面,再提交
2).如何避免表单的重复提交
在表单中做一个标记,提交到Servlet时,检查标记是否存在且是否和预定义的标记一致,若存在且一致,
销毁,并受理请求,若没有标记或不一致,则直接响应提示信息:”重复提交”
在原表单页面,生成一个随机值token
在原表单页面,把token值放入session属性中
在原表单页面,把token值放入到隐藏域中在目标Servlet中:获取session和隐藏域中的token值
判断session中是否有token值,并且和隐藏域中的token值是否一致,若存在且一致,受理请求,
且把session域中的token属性值清除
若不存在或不一致,则直接响应提示页面:”重复提交”
index.jsp
<% String tokenValue=new Date().getTime()+""; session.setAttribute("token", tokenValue); %> <form action="token" method="post"> <input type="hidden" name ="token" value="<%=tokenValue %>"/> name:<input type="text" name="username"/> <input type="submit" value="Submit"/> </form>
success.jsp
<h4>欢迎</h4>
token.jsp
<h4>表单重复提交了!</h4>
TokenServlet
package com.atweihai.javaweb.review;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class TokenServlet extends HttpServlet{ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //模拟网路延时 try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } //获取session中的token值和请求参数中的token值 HttpSession session=req.getSession(); String token=(String) session.getAttribute("token"); String tokenValue=req.getParameter("token"); System.out.println(token); System.out.println(tokenValue); //若session中的token值不为null 且与请求参数中的token值一致,则移除session中的token值 if(token!=null&&token.equals(tokenValue)){ session.removeAttribute("token"); }else{ //响应表单重复提交的页面 resp.sendRedirect(req.getContextPath()+"/token/token.jsp"); return; } String username=req.getParameter("username"); System.out.println("username:"+username); //响应到成功页面 resp.sendRedirect(req.getContextPath()+"/token/success.jsp"); }}
阅读全文
0 0
- JavaWeb Session 之表单的重复提交
- javaweb之Session客户端防表单重复提交(js)和服务端Session防表单重复提交
- JavaWeb使用Session防止表单重复提交
- javaweb开发之防止表单重复提交
- JavaWeb之——使用Session防止表单重复提交(插曲)
- JavaWeb避免表单的重复提交
- javaWeb中用Session控制表单重复提交(9)
- JavaWeb学习总结(使用Session防止表单重复提交)
- JavaWeb ——使用Session防止表单重复提交
- JAVA_WEB之Session防止表单重复提交
- Session应用之---防止表单重复提交
- javaweb中防止表单的重复提交(隐藏域+Session)
- session的使用:防止表单重复提交
- JavaWeb防止表单重复提交
- JavaWeb防止表单重复提交
- JavaWeb防止表单重复提交
- JavaWeb防止表单重复提交
- JavaWeb防止表单重复提交
- matlab将矩阵化成行最简形
- Sqoop 简介及安装部署
- 中国大学MOOC·Python网络爬虫与信息提取(一)
- C#笔记(5)textbox的hint属性
- 爬虫实战12—自动摘要及正文抽取
- JavaWeb Session 之表单的重复提交
- Mycat概述
- SVM之对偶问题
- Mathematical Field of Experiments (打表)
- 深度优先搜索—C—python
- exit函数
- SVM之核函数
- codility MinPerimeterRectangle
- Leap Motion C++ 开发笔记(二) 打开摄像头