问题描述
最近做一个导入进度条的功能,不是上传文件,是execl导入里面每条每行的数据,用jdbc和servlet在做,本来用ajax做的,而且我还要把插入失败的信息和你一共插入了多少行,还有进度条一起展示在一个页面上,而且用ajax做进度条要循环调用自己的函数,才能循环在后台得到jdbcdao层的影响行数,这样又跟我servlet导入有冲突,请问怎么解决这个疑难杂症。
解决方案
解决方案二:
jsp的代码
<%@pagelanguage="java"import="java.util.*"pageEncoding="gbk"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>MyJSP'execlload.jsp'startingpage</title><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"content="no-cache"><metahttp-equiv="expires"content="0"><metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="Thisismypage"><scriptsrc="js/prototype.js"type="text/javascript"></script><!--<linkrel="stylesheet"type="text/css"href="styles.css">--><scripttype="text/javascript">functiongetValueIE8(id){varip=document.getElementById(id);ip.select();varfoo1=document.selection.createRange().text;varmyAjax=newAjax.Request('ajaxServlet/insertcustomers.do?filename='+encodeURIComponent(foo1),{method:'post',parameters:Form.serialize('form1'),evalScripts:true,onComplete:reportError});}functionreportError(originalRequest){varmyobj=originalRequest.responseText.evalJSON(true);varstr="<table>";str=str+"<trstyle='color:red'>";str=str+"<td>以下数据导入失败,请重清空execl数据,重新导入<td><br/>";str=str+"</tr>"myobj.each(function(myobj1){str=str+"<trstyle='color:red'>";str=str+"<td>"+myobj1+"<td><br/>";str=str+"</tr>";});str=str+"</table>";$("reportError").innerHTML=str;}</script></head><body><formname="form1"id="form1"><inputtype="file"name="foo"id="foo"/><inputtype="button"value="execl导入"onclick="getValueIE8('foo')"/><inputtype="hidden"id="percent"value="0"size="2"><divid="reportError"></div></form></body></html>
解决方案三:
servlet代码publicvoidinsertExecl(HttpServletRequestrequest,HttpServletResponseresponse){IExeclDaoiexecldao=newExeclDao();inta=0;Listlist=newArrayList();Sheetsheet=null;try{request.setCharacterEncoding("gb2312");response.setContentType("text/html");response.setCharacterEncoding("gb2312");Stringfilename=request.getParameter("filename");System.out.println(filename);Filefile=newFile(filename);Workbookworkbook=Workbook.getWorkbook(file);sheet=workbook.getSheet(0);intcol=sheet.getColumns();System.out.println(col);introw=sheet.getRows();System.out.println(row);Stringresult[][]=newString[col][row];Cellcell;for(inti=0;i<col;i++){for(intj=0;j<row;j++){try{cell=sheet.getCell(i,j);result[i][j]=cell.getContents();}catch(Exceptione){e.printStackTrace();}}}Customers_companycustomers_company=null;Customers_company_contactcustomers_company_Contact=null;Customers_company_addresscustomers_company_address=null;for(intn=1;n<row;n++){//循环execl表里的每一行customers_company=newCustomers_company();customers_company_Contact=newCustomers_company_contact();customers_company_address=newCustomers_company_address();if(iexecldao.findcustomers_company(result[0][n])>0){//判断表里面的公司名称是否和数据库里面的重复Stringmess=file.getName()+"表中第"+(n+1)+"行公司名为:"+result[0][n]+"数据库中以存在";list.add(mess);}else{customers_company.setCompany(result[0][n]);customers_company.setCompany_simple(result[1][n]);customers_company.setCompany_phone(result[2][n]);customers_company.setFax(result[3][n]);if(result[4][n].trim().equals("")){//如果没空,且给个默认值为0result[4][n]="0";customers_company.setCustomers_company_id(Integer.parseInt(result[4][n]));}else{customers_company.setCustomers_company_id(Integer.parseInt(result[4][n]));}customers_company.setPark(result[5][n]);customers_company_Contact.setContact_name(result[6][n]);if(result[7][n].trim().equals("")){//如果为空,则给个默认日期Dated=newDate(Date.parse("1/10/1988"));customers_company_Contact.setContact_birthday(d);}else{Dated=newDate(Date.parse(result[7][n]));//将输入的表里的日期格式转型customers_company_Contact.setContact_birthday(d);}customers_company_Contact.setContact_address(result[8][n]);customers_company_Contact.setContact_zip(result[9][n]);customers_company_Contact.setContact_telephone(result[10][n]);customers_company_Contact.setContact_email(result[11][n]);customers_company_Contact.setContact_msn(result[12][n]);customers_company_Contact.setContact_qq(result[13][n]);customers_company_Contact.setContact_department(result[14][n]);customers_company_Contact.setContact_post(result[15][n]);customers_company_Contact.setSign(result[16][n]);customers_company_Contact.setAccount(result[17][n]);customers_company_Contact.setPassword(result[18][n]);customers_company_Contact.setContact_hphone(result[19][n]);customers_company_Contact.setActive(result[20][n]);customers_company_Contact.setSex(result[21][n]);customers_company_Contact.setContact_city(result[22][n]);customers_company_Contact.setContact_area(result[23][n]);customers_company_Contact.setPermission(result[24][n]);customers_company_address.setCity(result[25][n]);customers_company_address.setArea(result[26][n]);customers_company_address.setAddress(result[27][n]);customers_company_address.setZip(result[28][n]);customers_company_address.setSign(result[29][n]);if(result[30][n].trim().equals("")){//如果为空则给个默认值为0result[30][n]="0";customers_company_address.setAddress_type_id(Integer.parseInt(result[30][n]));}else{customers_company_address.setAddress_type_id(Integer.parseInt(result[30][n]));}a=iexecldao.insertExecl(customers_company,customers_company_Contact,customers_company_address);}}PrintWriterout=response.getWriter();JSONArrayjsonArray=JSONArray.fromObject(list);out.println(jsonArray);out.flush();out.close();workbook.close();}catch(Exceptione){e.printStackTrace();}}
解决方案四:
dao层的代码publicintinsertExecl(Customers_companycustomers_company,Customers_company_contactcustomers_company_Contact,Customers_company_addresscustomers_company_address){try{con=ConnectionFactory.getConnection();sql="insertintocustomers_company(company,company_simple,company_phone,fax,customers_id,park)values('"+customers_company.getCompany()+"','"+customers_company.getCompany_simple()+"','"+customers_company.getCompany_phone()+"','"+customers_company.getFax()+"','"+customers_company.getCustomers_company_id()+"','"+customers_company.getPark()+"')";sql1="selectmax(customers_company_id)ascustomers_company_idfromcustomers_company";con.setAutoCommit(false);st=con.prepareStatement(sql);num=st.executeUpdate();st1=con.prepareStatement(sql1);rs=st1.executeQuery();while(rs.next()){sql2="insertintocustomers_company_contact(contact_name,contact_birthday,contact_address,contact_zip,contact_telephone,contact_email,contact_msn,contact_qq,contact_department,contact_post,sign,customers_company_id,account,password,contact_hphone,active,sex,contact_city,contact_area,permission)"+"values('"+customers_company_Contact.getContact_name()+"','"+customers_company_Contact.getContact_birthday()+"','"+customers_company_Contact.getContact_address()+"','"+customers_company_Contact.getContact_zip()+"','"+customers_company_Contact.getContact_telephone()+"','"+customers_company_Contact.getContact_email()+"','"+customers_company_Contact.getContact_msn()+"','"+customers_company_Contact.getContact_qq()+"','"+customers_company_Contact.getContact_department()+"','"+customers_company_Contact.getContact_post()+"','"+customers_company_Contact.getSign()+"','"+rs.getInt("customers_company_id")+"','"+customers_company_Contact.getAccount()+"','"+customers_company_Contact.getPassword()+"','"+customers_company_Contact.getContact_hphone()+"','"+customers_company_Contact.getActive()+"','"+customers_company_Contact.getSex()+"','"+customers_company_Contact.getContact_city()+"','"+customers_company_Contact.getContact_area()+"','"+customers_company_Contact.getPermission()+"')";st2=con.prepareStatement(sql2);num1=st2.executeUpdate();sql3="insertintocustomers_company_address(city,area,address,zip,sign,customers_company_id,address_type_id)values('"+customers_company_address.getCity()+"','"+customers_company_address.getArea()+"','"+customers_company_address.getAddress()+"','"+customers_company_address.getZip()+"','"+customers_company_address.getSign()+"','"+rs.getInt("customers_company_id")+"','"+customers_company_address.getAddress_type_id()+"')";st3=con.prepareStatement(sql3);num2=st3.executeUpdate();}if(num>0&&num1>0&&num2>0){System.out.println(num);System.out.println(num1);System.out.println(num2);flag=true;con.commit();}}catch(SQLExceptione){//TODOAuto-generatedcatchblocktry{con.rollback();}catch(SQLExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}e.printStackTrace();}finally{ConnectionClose.close(rs,st,con);if(st1!=null){try{st1.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}if(st2!=null){try{st2.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}if(st3!=null){try{st3.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}return0;}