同时提交文件表单和普通表单的问题
提文件表单需要添加ENCTYPE="multipart/form-data"属性,这样才可以实现文件上传功能,但是这样做了以后在Servlet中就获取不到普通表单中数据了,上网查了很多,说可以通过循环迭代获取,但是总是遇到些问题,在这里请高手给个简单的例子,可以获取文件表单和普通表单的例子。
大概获取的数据就这么多,后面还需要使用Hibernate将数据插入数据库,这倒是没什么问题,就是我现在只可以获取到ID.报错如下:
请求进入服务器函数!TestServlet
开始初始化变量!
开始加载默认的配置文件hibernate.cfg.xml
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
正在创建sessionfactory
开始事务!
Hibernate: select * from uusermassage-----我的ID是从数据库中获取最后一条数据ID+1的方式,上面第24行代码就是
获取到的ID为1
获取到的ID为4
获取到的ID为5
获取到的ID为6
获取到的ID为8
获取到的ID为9
获取到的ID为10
获取到的ID为11
获取到的ID为12
获取到的ID为13
获取到的ID为14
获取到的ID为15
获取到的ID为16
获取到的ID为17
获取到的ID为18
获取到的ID为19
获取到的ID为20
获取到的ID为21
获取到ID为22
java.io.UnsupportedEncodingException: U_usermessage_xingming
at java.lang.StringCoding.decode(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at org.apache.commons.fileupload.disk.DiskFileItem.getString(DiskFileItem.java:375)
at com.servlet.TestServlet.service(TestServlet.java:84)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.servlet.EncodingFilter.doFilter(EncodingFilter.java:35)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
// 判断enctype属性是否为multipart/form-data
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){
//下面这两行构造文件上传处理对象
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
Iterator items;
try {
//下面这行解析表单提交的所有文件内容
items = upload.parseRequest(request).iterator();
while (items.hasNext()) {
FileItem item = (FileItem) items.next();
if (!item.isFormField()) {
//下面这段代码取出文件名,和服务器的存储路径,上传的文件将被存储在当前项目的file文件夹
String name = item.getName();
String fileName = name.substring(name.lastIndexOf('\\') + 1, name.length());
String path = request.getRealPath("file")+ File.separatorChar + fileName;
// 上传文件
File uploadedFile = new File(path);
item.write(uploadedFile);
U_usermessage_zhaopian=path;//为照片赋值!!
System.out.println("照片路径:"+path);
}else{
int id=GetID.GetID()+1;//定义id变量,次数据在插入数据库时有系统计算生成
System.out.println("获取到ID为"+id);
String U_usermessage_xingming=item.getString("U_usermessage_xingming");//获取姓名 String U_usermessage_fadongjihao=item.getString("U_usermessage_fadongjihao");//获取发动机号
String U_usermessage_chehao=item.getString("U_usermessage_chehao");//获取车号
String U_usermessage_pinpaixinghao=item.getString("U_usermessage_pinpaixinghao");//获取品牌型号
//由于日期需要转换,将所有日期放在一个try,catche里面处理缩小代码块
Date U_usermessage_nianshenriqi = null;//获取年审日期
Date U_usermessage_erbaoriqi = null;//获取二保日期
Date U_usermessage_yunyingzhengriqi= null;//获取运营证日期
Date U_usermessage_baoxianriqi= null;//获取保险日期
Date U_usermessage_luohuriqi= null;//获取落户日期
Date U_usermessage_zhuceriqi= null;//获取注册日期
Date U_usermessage_shangyexianshijian= null;//获取商业保险日期
try {
//获取年审日期
U_usermessage_nianshenriqi = DateFormat.getDateInstance().parse(item.getString("U_usermessage_nianshenriqi"));
//获取二保日期
U_usermessage_erbaoriqi=DateFormat.getDateInstance().parse(item.getString("U_usermessage_erbaoriqi"));
//获取运营证日期
U_usermessage_yunyingzhengriqi=DateFormat.getDateInstance().parse(item.getString("U_usermessage_yunyingzhengriqi"));
//获取保险日期
U_usermessage_baoxianriqi=DateFormat.getDateInstance().parse(item.getString("U_usermessage_baoxianriqi"));
//获取落户日期
U_usermessage_luohuriqi=DateFormat.getDateInstance().parse(item.getString("U_usermessage_luohuriqi"));
//获取注册日期
U_usermessage_zhuceriqi=DateFormat.getDateInstance().parse(item.getString("U_usermessage_zhuceriqi"));
//获取商业保险日期
U_usermessage_shangyexianshijian=DateFormat.getDateInstance().parse(item.getString("U_usermessage_shangyexianshijian"));
} catch (ParseException e) {
// TODO Auto-generated catch block
System.out.println("时间转换出问题!!");
e.printStackTrace();
}
//获取运营证号
String U_usermessage_yunyingzhenghao=item.getString("U_usermessage_yunyingzhenghao");
//获取保单号码
String U_usermessage_baodianhao=item.getString("U_usermessage_baodianhao");
//获取手机号码
String U_usermessage_shouji=item.getString("U_usermessage_shouji");
//获取车架号码
String U_usermessage_chejiahao=item.getString("U_usermessage_chejiahao");
//获取固定电话号码
String U_usermessage_gudingdianhua=item.getString("U_usermessage_gudingdianhua");
//获取保险金额,被进行强制转换
Double U_usermessage_baoxianjine=(Double.parseDouble(item.getString("U_usermessage_baoxianjine")));
//获取商业限金额,进行强制转换
Double U_usermessage_shangyexianjine=(Double.parseDouble(item.getString("U_usermessage_shangyexianjine")));
//获取备注文本
String beizhu=item.getString("beizhu");
大概获取的数据就这么多,后面还需要使用Hibernate将数据插入数据库,这倒是没什么问题,就是我现在只可以获取到ID.报错如下:
请求进入服务器函数!TestServlet
开始初始化变量!
开始加载默认的配置文件hibernate.cfg.xml
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
正在创建sessionfactory
开始事务!
Hibernate: select * from uusermassage-----我的ID是从数据库中获取最后一条数据ID+1的方式,上面第24行代码就是
获取到的ID为1
获取到的ID为4
获取到的ID为5
获取到的ID为6
获取到的ID为8
获取到的ID为9
获取到的ID为10
获取到的ID为11
获取到的ID为12
获取到的ID为13
获取到的ID为14
获取到的ID为15
获取到的ID为16
获取到的ID为17
获取到的ID为18
获取到的ID为19
获取到的ID为20
获取到的ID为21
获取到ID为22
java.io.UnsupportedEncodingException: U_usermessage_xingming
at java.lang.StringCoding.decode(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at org.apache.commons.fileupload.disk.DiskFileItem.getString(DiskFileItem.java:375)
at com.servlet.TestServlet.service(TestServlet.java:84)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.servlet.EncodingFilter.doFilter(EncodingFilter.java:35)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
...全文
相关推荐
Java实现表单提交(支持多文件同时上传)
本文介绍了Java、Android实现表单提交(支持多文件同时上传)的方法,具有一定的参考价值,下面跟着小编一起来看下吧
html中表单提交的实现
表单提交是常见的一种操作,这篇文章主要介绍了html中表单提交的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Asp.Net模拟表单提交数据和上传文件的实现代码
主要介绍了Asp.Net模拟表单提交数据和上传文件的实现代码,本文对3种情况都做了介绍,只有普通数据的表单、只上传文件的表单、包含普通数据和上传文件表单,需要的朋友可以参考下
javaweb表单数据和多文件上传
代码主要实现了javaweb实现表单数据和多文件的同时间上传。
layui实现form表单同时提交数据和文件的代码
今天小编就为大家分享一篇layui实现form表单同时提交数据和文件的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


