jsp 防止表单多次提交
1:首先java 后台代码生成一个token,然后保存到jsp 页面的一个隐藏控件并且保存到set session中
*/
@RequestMapping("/yuDengJi")
public String registrationAdd(HttpSession session, HttpServletResponse response, Model model, HttpServletRequest request,String exhiId,String canGuanId,String ispay,String type,String hangYe) {
YuDengJi rsEx = new YuDengJi();
rsEx.setExhiId(exhiId);//展览ID
rsEx.setType(type);//类型(0参展团1参观团,2标准展位,3门票) model.addAttribute("exhiId", exhiId);//展馆ID
model.addAttribute("canGuanId",canGuanId);//参观ID
model.addAttribute("ispay",ispay);//参观团详细页面意向登记只显示参观
model.addAttribute("hangYe", hangYe);//行业id model.addAttribute("tyep", type);//类型(0参展团1参观团,2标准展位,3门票)
model.addAttribute("countYuDengJi", yuDengJiService.getCountYuDengJi(rsEx));//已经登记的参展或参观的个数
String token = UUID.randomUUID().toString();//生成token 然后保存到jsp 页面的隐藏控件
session.setAttribute("yudengjiToken", token);
model.addAttribute("token", token); return "modules/yudengji/addYuDengJi";
}
2:当用户提交表单时到后台Controller 类保存方法进行判断,当token 等于null 时 或者 隐藏控件的token 值 不等于session 的token 值就判断操作为多次提交表单
@ResponseBody
@RequestMapping("/yuDengJi/saveExhibitors")
public String saveRegistration(HttpSession session, HttpServletResponse response, Model model, HttpServletRequest request,String type,String hangYe,String token) {
YuDengJi rsEx = new YuDengJi();
rsEx.setCompanyName(request.getParameter("companyName").trim());// 公司名称
rsEx.setType(type);// 类型
rsEx.setCanZhanMianJi(Double.parseDouble(request.getParameter("canZhanMianJi").trim()));// 意向参展面积
rsEx.setCanZhanYuSuan(Double.parseDouble(request.getParameter("canZhanYuSuan").trim()));//参展预算
rsEx.setName(request.getParameter("name").trim());// 联系人姓名
rsEx.setPhone(request.getParameter("phone").trim());// 联系人手机号码
rsEx.setMail(request.getParameter("mail").trim());// 邮箱
rsEx.setKaoChaDi(request.getParameter("kaoChaDi").trim());// 意向考察目的地
String exhiId = request.getParameter("exhiId").trim();
rsEx.setExhiId(exhiId);//展览ID
rsEx.setHangYe(hangYe);//关联行业 Account account = (Account)session.getAttribute(Constants.ACCOUNT);
String accountId = account.getId();
if(!"".equals(accountId) && accountId !=null){//用户ID
rsEx.setAccountId(Integer.parseInt(accountId));
}
try {
String yudengjiToken = (String)session.getAttribute("yudengjiToken");
if(yudengjiToken == null || !yudengjiToken.equals(token)){ }else{
yuDengJiService.save(rsEx);
session.removeAttribute("yudengjiToken");
} return "ok";
/*String ulr = "redirect:" + frontPath + "/exhi/product-"+exhiId+urlSuffix;
System.out.println("ulr>>>>"+ulr);
return "redirect:" + frontPath + "/exhi/product-"+exhiId+urlSuffix;*/
} catch (Exception e) {
e.printStackTrace();
return "no";
}
}
3:用完后记得从session 中 remove 掉token
session.removeAttribute("yudengjiToken");
jsp 防止表单多次提交的更多相关文章
- jsp验证表单后再提交
在提交表单时,我们常常需要验证核实表单内容,若都不为空时,方能提交:若有文本框为空则不提交,并获取鼠标焦点到文本框上 ,所以我们可以利用onsubmit的方法来做,请看下面例子: <html&g ...
- struts2 文件的上传下载 表单的重复提交 自定义拦截器
文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设 ...
- Session机制三(表单的重复提交)
1.表单的重复提交的情况 在表单提交到一个servlet,而servlet又通过请求转发的方式响应了一个JSP页面,这个时候地址栏还保留这servlet的那个路径,在响应页面点击刷新. 在响应页面没有 ...
- HttpSession解决表单的重复提交
1). 重复提交的情况: ①. 在表单提交到一个 Servlet, 而 Servlet 又通过请求转发的方式响应一个 JSP(HTML) 页面, 此时地址栏还保留着 Serlvet 的那个路径, 在响 ...
- Struts2 - 表单的重复提交问题
用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提 ...
- JSP的表单处理
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/form-processing.html: 当需要从浏览器向Web服务器传递一些信息并最终将信息返回到后端 ...
- HttpSession之表单的重复提交 & 验证码
如果采用 HttpServletResponse.sendRedirct() 方法将客户端重定向到成功页面,将不会出现重复提交问题 1.表单的重复提交 1). 重复提交的情况: ①. 在表单提交到一个 ...
- php中如何防止表单的重复提交
在php中如何防止表单的重复提交?其实也有几种解决方法. 下面小编就为大家介绍一下吧.需要的朋友可以过来参考下 代码: <?php /* * php中如何防止表单的重复提交 * by www.j ...
- php-- 避免表单的重复提交
用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题.我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交. 1.使用客户端脚本 提 ...
随机推荐
- Hadoop架构: 流水线(PipeLine)
该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 流水线(PipeLine),简单地理解就是客户端向DataNode传输数据(Packet)和接收Dat ...
- 7、Maven插件
什么是maven插件? maven 实际上是一类依赖插件执行的框架,每个任务实际上是由插件完成,Maven插件通常被用来 创建jar文件 创建war文件 编译代码文件 代码单元测试 创建工程文档 创建 ...
- 吴裕雄 PYTHON 神经网络——TENSORFLOW 无监督学习处理MNIST手写数字数据集
# 导入模块 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 加载数据 from tensor ...
- gitlab的搭建与汉化
gitlab的搭建:内存最好2G以上 yum -y install curl unzip policycoreutils git wget 安装相关依赖包 所有gitlab rpm包的 ...
- 07-Docker-Image深入理解
目录 07-Docker-Image深入理解 参考 镜像简介 什么是Docker镜像 什么是Docker容器 镜像结构 镜像特性 镜像层 容器层 镜像存储 07-Docker-Image深入理解 Do ...
- Android 调起系统相机拍照
概述 最近在看 nanChen 写的图片选择器 ImagePicker,感觉写得很不错,也打算把从中学到的东西写下来.很多时候,遇到一个好的框架能够降低开发成本这是好事.但是也要去了解其内部具体实现逻 ...
- @Primary 注解的作用
当一个接口有两个实现类时,并两个实现类都被 Spring 管理,则需要对某个类进行 @Primary 注解,表示优先选择此实现类. 否则会抛出 异常 org.springframework.beans ...
- Python - 并发编程,多进程,多线程
传送门 https://blog.csdn.net/jackfrued/article/details/79717727 在此基础上实践和改编某些点 1. 并发编程 实现让程序同时执行多个任务也就是常 ...
- javascript的阻止默认事件和阻止冒泡事件
这两个方面的知识,在妙味课堂中有听过,再次复习一下: 原文来自:[http://www.cnblogs.com/Essence/p/4266618.html] 事件冒泡与默认行为 在说事件冒泡之前 ...
- ubuntu 虚拟机添加多个站点
我们安装好lamp环境,然后开始操作,比如一个站点叫test.ubuntu1.com,一个叫test.ubuntu2.com 1.修改hosts文件,路径/etc/hosts sudo vim /et ...