`

jsp中使用jquery的ajaxSubmit方法实现现异步上传

阅读更多

 

 

html代码:

<FORM name="frmPostSC" id="frmPostSC" method="Post" action="<%=request.getContextPath()%>/Ga-Sy/ZaJcxxDaxxDjAction.do?method=ExeclReader" enctype="multipart/form-data" >           
       <fieldset style = "width: 98%;text-align:center;"><legend>导入</legend> 
         <DIV id=infor style="FONT-SIZE: 11px; WIDTH: 100%; COLOR: red; FONT-FAMILY: arial; POSITION: relative; HEIGHT: 14px; TEXT-ALIGN: center"></DIV>      
       	 <INPUT type="file" name="cmdExecl" style="width:300px;" id="cmdExecl" class='Edit'">    
         <INPUT type="button" name="cmdExeclReader" id="cmdExeclReader" class="Button" value="开始导入" onclick="doExeclReaderSC();">
       </fieldset> 
       </FORM>

 

JS代码:

<script type="text/javascript" src="<%=request.getContextPath()%>/js/JQuery/jquery-1.4.4.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/JQuery/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/JQuery/jquery.form.js"></script>
function doExeclReaderSC(){
    unBtns(["cmdExeclReader"]);
	$("#frmPostSC").ajaxSubmit({
        target:"#infor",
		type: "post",
		dataType: "script",  
		beforeSubmit: function(formData, jqForm, options){
				document.getElementById("infor").innerText='正在装载数据,请耐心等待...';
				return true;
		},
		success:function (msg) { 
		        var arr=msg.split(",");
				document.getElementById("infor").innerText=arr[0];
				doExeclReader(arr[1]);							      
	   }
	});
	//inBtns(["cmdExeclReader"]);
}
function doExeclReader(val)
{
    // 把字符串中的所有 \ 替换成 / 
    val = val.replace(/\\/g,"/") ;

	if (window.XMLHttpRequest)
	{
	  xmlhttp=new XMLHttpRequest();
	}
	else
	{
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	//unBtns(["cmdExeclReader"]);
	var url = strAction+"?method=doReader&URL="+encodeURI(encodeURI(val));
	xmlhttp.onreadystatechange=CallBackFunction;
	xmlhttp.open("GET",url,true);
	xmlhttp.send();
}
function CallBackFunction()
{
   if(xmlhttp.readyState==1){
   		document.getElementById("infor").innerText="由于数据量较大,可能会一段时间,请耐心等待,千万不要操作页面,正在导入中,请稍候...";	
   }
   else if(xmlhttp.readyState==3){
   		document.getElementById("infor").innerText="由于数据量较大,可能会一段时间,请耐心等待,千万不要操作页面,正在导入中,请稍候...";	
   }else if(xmlhttp.readyState==0){
   		document.getElementById("infor").innerText=xmlhttp.responseText;
   }
   else if (xmlhttp.readyState==4 && xmlhttp.status==200)
   {
    	document.getElementById("infor").innerText=xmlhttp.responseText;
    	inBtns(["cmdExeclReader"]);   
   }
}

 

 

Action代码:

import java.io.File;
import java.sql.Connection;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.dom4j.Document;
import org.dom4j.Element;

public class ZaJcxxDaxxDjAction
    extends BaseDispatchAction {
public ActionForward ExeclReader(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {    
    	System.out.println("进入ExeclReader方法");
    	 User user = (User)request.getSession().getAttribute(com.framework.Globals.USER_KEY);
    	 //RightManager.checkPower(request, response, "");
    	 Connection conn = DBUtil.getConnection(); 
    	 try {
    		   DiskFileItemFactory dfif = new DiskFileItemFactory();
    		   ServletFileUpload upload = new ServletFileUpload(dfif);
    		   upload.setSizeMax(10 * 1024 * 1024); // 允许上传的最大值
    		   request.setCharacterEncoding("GBK");
    		   List list = upload.parseRequest(request); // 开始解析request对象中的表单数据
    		   if (list.size() >= 1) {
	    		    FileItem item = (FileItem) list.get(0);
	    		    String name = item.getName();
	    		    name = name.substring(name.lastIndexOf("\\") + 1);
	                String path = "tempFile";
	                ServletContext ctx = this.getServlet().getServletContext();
	    		    path = ctx.getRealPath(path);
	    		    File file = new File(path);
	    		    if(!file.exists()){
	    		     System.out.println("创建文件夹");
	    		     file.mkdir();
	    		    }	
	    		    System.out.println(path);
	    		    System.out.println(name);
	    		    //将文件放到指定的地方
	    		    item.write(new File(path, name));
	    		    System.out.println("数据装载完成...") ;
	    		    Pub.writeMessage(response,"数据装载完成...!,"+path+"\\"+name);
    		   }
    		  } catch (Exception e) {
    		   throw new Exception("file upload error!", e);
    		  }
    	 
    return null;
    }
    public ActionForward doReader(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
    	 System.out.println("进入doReader方法");
    	 User user = (User)request.getSession().getAttribute(com.framework.Globals.USER_KEY);
    	 String url=java.net.URLDecoder.decode(request.getParameter("URL"), "UTF-8");
    	 Connection conn = DBUtil.getConnection();
    	 Statement stmt = conn.createStatement();        
	     Workbook workbook = null;
	     Sheet sheet =null;
	     Cell cell = null;
	     try {
	    	System.out.println(url);
	        workbook = Workbook.getWorkbook(new File(url));
		    sheet= workbook.getSheet(0);
		    int columnCount=sheet.getColumns();
		    int rowCount=sheet.getRows();
		    System.out.println("开始导入...");
		    for (int i = 2; i <rowCount; i++) {
		    	if("".equals(sheet.getCell(1, i).getContents())){
		    		break;
		    	}
		    	String sql="insert into ZA_JCXX_DAXX_DJ (xh,AJH,DABT,DQBTPY,DAXZ,DAND,BGQX,GLDWDM,DALB,QZH,TBR,TBSJ,CXBS) values('"+com.common.SequenceUtil.getCommonSerivalNumber()+"'";		     
		        for (int j = 1; j <9; j++) {//注意,这里的两个参数,第一个是表示列的,第二才表示行
		            cell=sheet.getCell(j, i); //要根据单元格的类型分别做处理,否则格式化过的内容可能会不正确			            
            		sql=sql+",'"+cell.getContents()+"'";
            		if(j==2){
            			sql=sql+",'"+SpellCache.getInstance().getAspell(cell.getContents())+"'";
            		}		
		            
		        }
		        
		        Date date=new Date();
		        SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
		        String sj=df.format(date);
		        sql+=",'"+user.getAccount()+"',to_date('"+sj+"','yyyy-MM-dd'),'0')";
		        System.out.println(sql);
		        stmt.execute(sql);	                    
		        sql="";
		    }
		  System.out.println("完成导入...");
		  workbook.close();
		  stmt.close();
          stmt = null;	
		  conn.commit();
		  Pub.writeMessage(response,"导入成功!");
		  }catch (Exception e) {
			  Pub.writeMessage(response,"导入失败!");
	          conn.rollback();
	          stmt.close();
	          stmt = null;	
	          workbook.close();
	          e.printStackTrace(System.out);	        	  	    
		 }   
    return null;
    }
}

 

 

 

 

 

 

 

  • js.rar (80.4 KB)
  • 下载次数: 51
  • jxl.jar (688 KB)
  • 下载次数: 23
分享到:
评论

相关推荐

    jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码

    本文将要介绍的是如何使用jQuery库中的ajaxSubmit()方法来异步上传图片文件,并保存表单数据的过程。ajaxSubmit()是jQuery的一个扩展方法,它属于jQuery Form插件的一部分,专门用于处理表单的异步提交。它支持文件...

    jquery上传后回显

    使用`$.ajax`或`$("#formId").ajaxSubmit`(来自`jquery.form.js`)来实现异步上传。这里假设有一个名为`upload.jsp`的后端页面处理图片上传: ```javascript $("#uploadImage").change(function() { var formData...

    利用AjaxSubmit()方法实现Form提交表单后回调功能

    AjaxSubmit()方法是jQuery Form插件提供的一种功能强大的表单提交方式,它允许我们在异步提交表单时实现前后端交互的回调功能,从而避免页面刷新,提高用户体验。在实际应用中,比如文件上传、表单验证等场景,...

    ajaxSubmit局部刷新

    综上所述,AjaxSubmit结合jQuery Form Plugin,通过异步提交表单和局部刷新技术,可以在不中断用户界面的情况下实现文件上传和动态更新内容,极大地提高了Web应用的用户体验。同时,开发者需要注意处理可能出现的...

    jquery实现表单文件上传,并获取回调信息

    首先,我们需要理解jQuery中的`ajaxForm`或`ajaxSubmit`方法,这两个方法是jQuery Form Plugin的一部分,可以在异步方式下提交表单,包括文件上传。这里,`index.jsp`文件可能是我们的HTML页面,其中包含用于文件...

    jQuery+AJAX实现网页无刷新上传

    前端部分主要依赖于jQuery的ajaxSubmit方法,它能异步提交表单,确保页面在上传过程中保持无刷新状态。此外,示例还提供了三种不同样式的CSS文件(绿色、蓝色、银色),以供用户自定义上传按钮和进度条的外观。 在...

    jquery管理cookie和form的js

    可以使用`$('form').ajaxSubmit(options)`方法来异步提交表单,避免页面刷新,提高用户体验。 2. **表单验证**: 虽然jQuery本身不包含内置的验证功能,但通过Form插件可以结合其他验证库(如jQuery Validation ...

    jspservlet文件上传实例

    本文将深入解析一个基于JSP与Servlet技术实现的文件上传实例,通过分析其代码结构与工作流程,帮助读者理解并掌握Java环境下文件上传的基本原理及实现方法。 #### 二、AJAX方式的文件上传 首先,我们关注的是采用...

    spring+struts2+mybatis框架实现单表增删改查、条件查询和分页、文件上传

    前端可能需要jQuery的ajaxSubmit或其他类似方法来异步上传文件,提供更好的用户体验。 8. **jQuery**:jQuery是一个快速、简洁的JavaScript库,能简化HTML文档遍历、事件处理、动画和Ajax交互。在这个项目中,...

    解决jquery submit()提交表单提示:f[s] is not a function

    在使用jQuery进行网页开发时,有时会遇到这样一个问题:当你尝试使用`submit()`函数来提交表单时,浏览器会抛出一个错误:“f[s] is not a function”或“document.getElementByIdx_x(...).submit is not a function...

    ajax无刷新上传图片

    - **Ajax请求**:通过`XMLHttpRequest`或使用jQuery的`$.ajax()`或`$.post()`方法发送异步请求,将文件数据提交到服务器。 - **服务器端处理**:接收到文件后,保存图片并返回相应的确认信息。 - **前端响应**:根据...

    struts2 ajax 实例

    3. **JQuery/Ajax库**:使用JQuery库发送Ajax请求,例如`$.ajax()`或`$.getJSON()`方法,与Struts2的Action进行通信。 一个简单的Struts2 Ajax实例包括以下几个步骤: 1. **创建Action类**:编写一个处理Ajax请求...

    将form表单通过ajax实现无刷新提交的简单实例

    在我们的例子中,我们使用jQuery库来简化这个过程,因为jQuery提供了一个方便的$.ajax方法来处理Ajax请求。 以下是一个简单的Ajax表单提交函数`ajaxSubmit`: ```javascript function ajaxSubmit(url, frm, fn) { ...

Global site tag (gtag.js) - Google Analytics