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.使用客户端脚本 提 ...
随机推荐
- 03hive_DDL数据定义
一. DDL数据定义 创建数据库 1)create database db_hive; 2)避免要创建的数据库已经存在错误,增加 if not exists 判断. create database i ...
- 本次我们使用idea构建springmvc项目
该案例的github地址:https://github.com/zhouyanger/demo/tree/master/springmvcdemo1 1.首先我们可以创建maven项目,file-&g ...
- Docker - 解决docker-machine create下载boot2docker.iso时慢的问题
解决步骤 从https://github.com/boot2docker/boot2docker/releases下载iso到~/.docker/machine/cache/里 docker-mach ...
- Flex布局如何实现最后一个元素右对齐(CSS)
在最后一项元素使用样式: margin-left: auto;
- docker安装后启动报错
docker安装后启动不起来: 查看日志 /var/log/message 其中有一行为: Your kernel does not support cgroup memory limit ...
- 吴裕雄 python 人工智能——智能医疗系统后台用户复诊模块简约版代码展示
#复诊 import sys import os import time import operator import cx_Oracle import numpy as np import pand ...
- 【Struts 编码】
EncodingFilter package k.filter; import javax.servlet.*; import javax.servlet.http.HttpServlet; impo ...
- DELPHI开发和使用REDIS
DELPHI开发和使用REDIS REDIS SERVER是独立的存在,支持WINDOWS,LINUXREDIS PUB/SUB 用于聊天 只是其中的一种用法任何消息或其他类型数据 都可以必须安装 ...
- Flask - Flask高级技巧(Advanced Flask Patterns)
传送门 来自作者的PPT https://speakerdeck.com/mitsuhiko/advanced-flask-patterns?slide=46
- 喵星之旅-狂奔的兔子-redis使用
一.命令行使用 redis大概有200多命令,这里只是入门级别,列举了一些非常常见的内容,如果这些会了就可以开启redis进一步学习了. 1.登录数据库 我们需要知道ip地址.端口号.密码(如果有). ...