防止重复提交

本文探讨了在使用Multipart表单数据时,EL表达式的局限性及替代方案,介绍了如何通过直接参数传递避免重复提交问题,并提供了一个处理文件上传和普通字段的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发工具与关键技术:MyEclipse 10、java
作者:梁添荣
撰写时间:2019-6-08

新增数据时,如果form表单用到了enctype="multipart/form-data"属性,是不可以用El表达式获取值的,此时如果想要传参的话,我想到的方法是再action里片接参数进入传参,
如果新增后,地址栏是指定servlet的新增方法,在浏览器自带刷新那刷新,则会再进行一次新增.
为了避免出现此情况,只能在input里设置一个时间段已毫秒的速度刷新,标记该数据新增的时间,在新增时,把该input里的值付给另一个变量,当新增完后,刷新浏览器自带的刷新时,判断该input的时间是否等于刚才的变量,是则转发成刷新,否则就是新增并刷新。
因为用到enctype="multipart/form-data"则用不了EL表达式,所以可用以下代码进行新增(上传文件判断是普通格式还是文件)
if(fileItem.isFormField()){
				
				name=fileItem.getFieldName();
				value=fileItem.getString("UTF-8");
			
				if("DriverName".equals(name)){
					driver.setDriverName(value);
					driverName=value;
				}else if("Sex".equals(name)){	
					driver.setSex("0".equals(value)?true:false);
				}else if("Phone".equals(name)){	
					int it=Integer.valueOf(value);
					driver.setPhone(it);
				}else if("IDno".equals(name)){
					driver.setiDno(value);
					iDno=value;
				}else if("QualificationCode".equals(name)){
					driver.setQualificationCode(value);
				}else if("Driverlicensenumber".equals(name)){
					driver.setDriverlicensenumber(value);
				}else if("Quasidrivingtype".equals(name)){
					driver.setQuasidrivingtype(value);
				}else if("Qualificationcertificate".equals(name)){						
					try {
						st=value.replace("/", "-");
						driver.setQualificationcertificate(dateFormat.parse(st));
					} catch (ParseException e) {
						e.printStackTrace();
					}
				}else if("Remark".equals(name)){
					driver.setRemark(value);
				}else if("Drivinglicencedate".equals(name)){
					try {
						st=value.replace("/", "-");
						driver.setDrivinglicencedate(dateFormat.parse(st));
					} catch (ParseException e) {
						e.printStackTrace();
					}
				}else if("DateOfEmployment".equals(name)){
					try {
						st=value.replace("/", "-");
						driver.setDateOfEmployment(dateFormat.parse(st));
					} catch (ParseException e) {
						e.printStackTrace();
					}
				}else if("Drivernumber".equals(name)){
					driver.setDrivernumber(value);
//1.获取设置时间的文本框的值赋值给另一个变量

				}else if("time".equals(name)){
					time=value;
2.新增进行判断
		if(time2.equals(time)){//防止重复提交
			request.getRequestDispatcher("/servlet/Servlet?type=select").forward(request, response);
		}else{
			time2=time;
			String str0=driverSer.findByDriverNameAndIDno(driverName, iDno);
			if("该数据已存在!".equals(str0)){
				request.setAttribute("rs", str0);//提示是否成功
				request.getRequestDispatcher("/servlet/Servlet?type=select").forward(request, response);
			}else{
				String str=driverSer.insert(driver);
				request.setAttribute("rs", str);
				request.getRequestDispatcher("/servlet/Servlet?type=select").forward(request, response);
			}
		}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值