异步上传且处理业务文档

应项目要求,需要异步上传文件进行业务处理且展示结果,之前曾用过DWR、JQuery等开源Ajax框架,发现并没有相关的技术支持。在网上搜索一些资料、结合自己的摸索发现有几个关键点:

1、提交form时,其目标为当前页面隐藏的iframe。

form标签的格式:

<form name="form1" action="异步请求地址" method="post" target="_iframeId" enctype="multipart/form-data" >

iframe标签格式:

<iframe src="./" name="_iframeId" id="_iframeId" style="display:none" ></iframe>


2、后台处理上传的文件流。

(1)以java为例,可以采用jspSmartUpload、Commons-fileupload等。在项目中应用了Webwork2框架,可以配置Webwork的fileUpload Interceptor,然后在Action里将从上下文获取到的request转换成MultiPartRequestWrapper类型,即可获得上传的文件列表。

(2)对于文件的处理,针对不同类型的文件,有很多开源包。比如:

Apache POI------用于处理Excel,WORD等Microsoft Format的文档

PDFBox------用于处理PDF文档

Commons-Digester------非常优秀的处理XML文档的项目

HTML Parser------用户解析html信息等

 

3、展示业务处理结果

需要不用刷新页面,以显示处理结果,可以采用javaScript来完成。

具体为在后台业务处理完成后,可通过上下文获取页面应答输出流对象,输出javaScript脚本来执行一些展示数据的动作。因为输出内容是在页面的iframe标签里,所以如果要调用页面上iframe之外的对象必须用前缀parent.来标识。

示意代码如下:

HttpServletResponse res = context.getResponse();
res.setContentType("text/html; charset=GBK");
PrintWriter out = res.getWriter();
try {
    out.print("<script>parent.callback('The result info.');</script>");
} finally {
    out.close();
}

 

 

你可能感兴趣的:(JavaScript,jquery,DWR,Excel,Webwork)