- 浏览: 733730 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
18335864773:
看了楼主写的用jxl生成excel。有地方用到了流,还特别强调 ...
jxl导出excel文件简单示例 -
shaoshou111:
查看Apache的并发请求数及其TCP连接状态netstat ...
Linux查看连接数,并发数 -
gengjunshi:
非常感谢哈,刚好在学webservice编程,很有用呢。
JAX-WS开发webservice示例详解 -
zcgewu:
encrypt2()和encrypt()有什么区别
JAVA实现AES加密 -
java爱好者92:
ireport的操作还是相对比较复杂的,帆软报表会相对简单一点 ...
iReport报表开发中常见的问题
最近因为项目需要,做了一个XLS文件上传.但不知道如何下手.就拿来别人的代码看了一下.如下:
首先,在application-data.xml中添加:
这里用到了一个设计模式――工厂模式,用户程序从工厂类SessionFactory中取得Session的实例,可以用来刷新数据库.
SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。
在com.ibm.process.persistence.dao.ProcessAttachmentDAO"中
其次,在application-service.xml中添加:
再次,把ProcessAttachmentHandler注入到Spring中让Action使用.
在Action中添加如下代码:
在JSP中添加代码如下图所示:
在另一个Action中保存附件.
在approval中只显示出附件的做法:
如图所示:
在点击xls时,执行了downLoadFileAction.do的动作.分别在Struts与Spring中配置如下:
struts-application.xml
application-servlet.xml
在DownLoadFileAction中代码如下:
首先,在application-data.xml中添加:
<bean id="attachmentDao" class="com.ibm.process.persistence.dao.ProcessAttachmentDAO"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean>
这里用到了一个设计模式――工厂模式,用户程序从工厂类SessionFactory中取得Session的实例,可以用来刷新数据库.
SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。
在com.ibm.process.persistence.dao.ProcessAttachmentDAO"中
/* * 创建日期: 2006-4-29 * Version: 1.0 */ package com.ibm.process.persistence.dao; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.ibm.process.persistence.pojo.ProcessAttachment; /** * * TJMCC EIP II Copyright:IBM BCS * * @author fengfei * */ public class ProcessAttachmentDAO extends HibernateDaoSupport { //查询 public ProcessAttachment query(Integer fileId) { java.util.List list = this.getHibernateTemplate().find( "from ProcessAttachment a where a.fileId=?", fileId); if (list == null || list.size() == 0) return null; return (ProcessAttachment) list.get(0); } //增加保存 public void add(ProcessAttachment attachment) { this.getHibernateTemplate().save(attachment); } public void delete(ProcessAttachment attachment) { this.getHibernateTemplate().delete(attachment); } //修改 public void modify(ProcessAttachment attachment) { this.getHibernateTemplate().update(attachment); } //查询多个 public List queryAttachmentList(Integer processId) { List list = null; if (processId != null && !"".equals(processId)) { list = this.getHibernateTemplate() .find("from ProcessAttachment pc where pc.processId=?", processId); } if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) { ProcessAttachment temp = (ProcessAttachment) list.get(i); temp.setTempFileName(temp.getFileName().substring(14, temp.getFileName().length())); } } return list; } public List ListProcessAttachment(Integer processId) { List list = null; if (processId != null && !processId.equals("")) { list = this.getHibernateTemplate() .find("from ProcessAttachment pc where pc.processId=?", processId); } if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) { ProcessAttachment temp = (ProcessAttachment) list.get(i); temp.setTempFileName(temp.getFileName().substring(14, temp.getFileName().length())); } } return list; } //删除 public void removeByFormId(Integer processId) { List list = this.queryAttachmentList(processId); if (list != null) { for (int i = 0; i < list.size(); i++) { delete((ProcessAttachment) list.get(i)); } } } }
其次,在application-service.xml中添加:
<bean id="attachmentHandle" class="com.ibm.process.web.fileupload.ProcessAttachmentHandler"> <property name="dao" ref="attachmentDao"/> <property name="upload" ref="upload"/> </bean>
再次,把ProcessAttachmentHandler注入到Spring中让Action使用.
<bean name="/Apply" parent="actionTemplate"> <property name="target"> <bean class="Action"> <property name="handle" ref="attachmentHandle"/> </bean> </property> </bean>
在Action中添加如下代码:
import com.ibm.process.web.fileupload.ProcessAttachmentHandler; private ProcessAttachmentHandler handle; /** * @return Returns the handle. */ public ProcessAttachmentHandler getHandle() { return handle; } /** * @param handle * The handle to set. */ public void setHandle(ProcessAttachmentHandler handle) { this.handle = handle; } try { //查找附件 java.util.List attachments = handle.getDao().queryAttachmentList(Integer.valueOf(businessId)); request.setAttribute("attachments", attachments); } catch (Exception e) { logger.error("get upload attachments error", e); throw e;}
在JSP中添加代码如下图所示:
<table width="100%" border="0"> <tr> <td width="90%"> <table id="tblsales" width="100%" border="0" cellpadding="0" cellspacing="0"> <c:if test="${attachments!=null}"> <c:forEach items="${attachments}" var="attachment" varStatus="counter"> <tr><td></td></tr> <tr> <td id="span<c:out value='${counter.count-1}'/>" name="span<c:out value='${counter.count-1}'/>"> <table> <tr> <td width="88%"> <input type="file" name="uploadFile[<c:out value='${counter.count-1}'/>].file" value="" size="50"/><a href="<%= request.getContextPath()%>/downLoadFileAction.do?filename=<c:out value='${attachment.fileName}'/>"><c:out value="${attachment.tempFileName}"/></a> <input type="hidden" name="uploadFile[<c:out value='${counter.count-1}'/>].fileId" value="${attachment.fileId}"/> <input type="hidden" name="fileId" value="<c:out value='${attachment.fileId}'/>"/> <input type="hidden" name="deleteFileId" value=""/> </td> <td width="2%"></td> <td width="10%"><input type="button" name="DeleteFile"+"${counter.count-1}" value="删除" class="button_2" onClick="deleteAtt('<c:out value='${counter.count-1}'/>')"/></td> </tr> </table> </td> </tr> </c:forEach> </c:if> <c:if test="${attachments==null}"> <tr> <td id="span0" name="span0"> <table> <tr> <td width="88%"> <input type="file" name="uploadFile[0].file" value="" size="50"/> <input type="hidden" name="uploadFile[0].fileId" value=""/> <input type="hidden" name="fileId" value=""> <input type="hidden" name="deleteFileId" value=""/> </td> <td width="2%"></td> <td width="10%"><input type="button" name="DeleteFile0" value="删除" class="button_2" onClick="deleteAtt(0)"/></td> </tr> </table> </td> </tr> </c:if> </table> </td> <td width="10%" valign="top" style="padding-top:2px"> <span style="padding-left:10px"> <input type="button" name="Submit4223" value="增加附件" class="button_4" onClick="addToTable()"> <input type="hidden" name="attsize" value="<c:if test='${attachments==null}'>1</c:if><c:if test='${attachments!=null}'><c:if test='${attsize!=null}'><c:out value='${attsize}'/></c:if><c:if test='${attsize==null}'>0</c:if></c:if>"/> </span> </td> </tr> </table>
<!-- 添加附件与删除附件的方法 --> <script language="javascript" type=""> function addToTable(){ var the_table = document.all("tblsales"); var attsizeObj = document.all("attsize"); trId = attsizeObj.value; var the_row,the_cell; the_row = -1; var newrow=the_table.insertRow(the_row); newrow.insertCell(); newrow.cells(0).id="span"+trId; newrow.cells(0).name="span"+trId; tmpHTML = "<table><tr><td width='88%'>"; tmpHTML = tmpHTML+"<input type='file' name='uploadFile["+trId+"].file' value='' size='50'>" + "<input type='hidden' name='uploadFile["+trId+"].fileId' value=''>" + "<input type='hidden' name='fileId' value=''>" + "<input type='hidden' name='deleteFileId' value=''>"; tmpHTML = tmpHTML+"</td>"; tmpHTML = tmpHTML+"<td width='2%'></td>"; tmpHTML = tmpHTML+"<td width='10%'><input type='button' name='DeleteFile"+trId+"' value='删除' class='button_2' onClick='deleteAtt("+trId+")'/></td>"; tmpHTML = tmpHTML+"</tr></table>"; newrow.cells(0).innerHTML=tmpHTML; trId++; attsizeObj.value=trId; } function deleteAtt(attid){ var att=document.getElementById("span"+attid); att.style.display="none"; var arraydelete=document.all("deleteFileId"); if(arraydelete!=null) { if(attid==0) { if(arraydelete[0]==null) { if(arraydelete!=null) { arraydelete.value="y"; } } if(arraydelete[0]!=null) { arraydelete[attid].value="y"; } } else { arraydelete[attid].value="y"; } } } </script>
在另一个Action中保存附件.
private ProcessAttachmentHandler handle; /** * @return Returns the handle. */ public ProcessAttachmentHandler getHandle() { return handle; } /** * @param handle The handle to set. */ public void setHandle(ProcessAttachmentHandler handle) { this.handle = handle; } String templateName = "SPContractProcess"; int val = (int) apply.getId().longValue(); Integer processId = null; if (val < 0) { val = -val; } String[] fileId = applyForm.getFileId(); String[] deleteFileId = applyForm.getDeleteFileId(); processId = Integer.valueOf("" + val); try { ProcessAttachment processAttachment = new ProcessAttachment(); processAttachment.setFileUser(user.getUserName()); processAttachment.setTemplateName(templateName); processAttachment.setProcessId(processId); handle.modifyAttachment(applyForm, processAttachment, fileId, deleteFileId); } catch (Exception e) { // logger.error("upload files error", e); throw e; }
在approval中只显示出附件的做法:
如图所示:
<!-- 附件添加删除部分的代码 --> <tr> <td class="table_color_1"></td> <td height="25" class="lshowtd">附件:</td> <td colspan="5" class="l_line"> <table width="100%" border="0"> <tr> <td width="82%" valign="top"> <table width="100%" border="0" cellpadding="0" cellspacing="0" id="tblsales"> <c:if test="${attachments!=null}"> <c:forEach items="${attachments}" var="attachment" varStatus="counter"> <tr> <td><a href="<%= request.getContextPath()%>/downLoadFileAction.do?filename=<c:out value='${attachment.fileName}'/>"><c:out value="${attachment.tempFileName}"/></a></td> </tr> </c:forEach> </c:if> <c:if test="${attachments==null}"> <tr> <td> </td> </tr> </c:if> </table> </td> </tr> </table> </td> </tr>
在点击xls时,执行了downLoadFileAction.do的动作.分别在Struts与Spring中配置如下:
struts-application.xml
<action path="/downLoadFileAction"> </action>
application-servlet.xml
<bean name="/downLoadFileAction" class="com.ibm.process.struts.action.DownLoadFileAction"> <property name="fileURL" value="${fileURL}"/> </bean>
在DownLoadFileAction中代码如下:
public class DownLoadFileAction extends BaseAction { private String fileURL; public String getFileURL() { return fileURL; } public void setFileURL(String fileURL) { this.fileURL = fileURL; } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionForward temp = null; String filename = request.getParameter("filename"); String filetemp = request.getParameter("filename"); if (filetemp != null && !"".equals(filetemp) && filetemp.length() >= 14) { filetemp = filetemp.substring(14, filetemp.length()); } // filetemp = new String(filename.getBytes("UTF-8"), "ISO-8859-1"); // filename = new String(filename.getBytes("GBK"), "ISO-8859-1"); // filename = new String(filename.getBytes("GB2312"), "ISO-8859-1"); // filename = new String(filename.getBytes("ISO8859-1"), "UTF-8"); // filename = new String(filename.getBytes("ISO8859-1"), "GBK"); // filename = new String(filename.getBytes("ISO8859-1"), "GB2312"); // filename = URLEncoder.encode(filename, "ISO8859-1"); filetemp = URLEncoder.encode(filetemp, "UTF-8"); // filename = URLEncoder.encode(filename, "GB2312"); // filename = URLEncoder.encode(filename, "GBK"); // filename = new String(filename.getBytes("ISO8859-1"), "UTF-8"); // filename=URLEncoder.encode(filename,"GBK"); // filename=new String(filename.getBytes("GBK"), "ISO-8859-1"); response.setContentType("application/octet-stream"); // response.setContentType("application/octet-stream; charset=UTF-8"); response.setHeader("Content-disposition", "attachment; filename=" + filetemp); BufferedInputStream bis = null; BufferedOutputStream bos = null; try { // EIPLogger.debug("FileName:"+fileURL+filename); // fileURL="/portal/"; File file = new File(fileURL + filename); bis = new BufferedInputStream(new FileInputStream(file)); bos = new BufferedOutputStream(response.getOutputStream()); bos.flush(); byte[] buff = new byte[12048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } } catch (final IOException e) { System.out.println("File Download IOException.\n" + e); } catch (Exception e) { e.printStackTrace(); } finally { if (bis != null) bis.close(); if (bos != null) bos.close(); } return null; } }
发表评论
文章已被作者锁定,不允许评论。
-
父页面与子页面的相互调用
2017-12-14 14:51 2567一、在页面里用 open ... -
(转)Java jacob调用打印机打印word文档
2017-12-01 17:33 3761折腾了好久,最终决定由用一个第三方的,找到了jacob,还不 ... -
gson的使用分享
2016-01-15 13:48 1834一、 最基本的对象与JSON相互转换 1、 定义java对象 ... -
(转)FindBugs规则整理
2015-12-18 10:40 6618FindBugs是基于Bug Patterns ... -
Gson注解和GsonBuilder
2015-04-07 11:49 1696//注意这里的Gson的构建方式为GsonBuilder, ... -
Spring AOP 的@Aspect (转)
2015-03-03 15:50 906从Spring 2.0开始,可以使用基于schema及@As ... -
Hibernate一对多和多对一关系详解 (转载)
2014-07-10 17:00 1840双向一对多关系,一是关系维护端(owner side),多是关 ... -
Struts2的Action如何交给spring来管理
2014-07-10 11:35 853我的Action是 <package name=&qu ... -
javax.xml.ws.soap.SOAPFaultException: Cannot create a secure XMLInputFactory
2014-06-04 20:26 1814javax.xml.ws.soap.SOAPFaultExce ... -
照片打包下载
2014-05-22 09:32 1227设计思路: 通过业务表中照片编号获得需要下载的照片列表 ... -
获得请求IP
2013-12-06 14:18 1112在AbstractInterceptor中 Action ... -
jxl导入excel
2013-09-17 16:56 933jxl读取excel和写excel基本类似,只是Writab ... -
Apache与Nginx的优缺点比较(转)
2013-08-26 11:13 11681、nginx相对于apache的优点: 轻量级,同样起we ... -
findbugs清理总结
2013-08-19 14:45 3014findbugs警告26个。主要有以下9类问题。 1、B ... -
Spring 2.0 的AOP
2013-05-22 16:36 932我使用的是Spring 2.0 的AOP, 它引入了一种更加简 ... -
APK下载配置
2013-04-15 17:44 1078tomcat-6.0\conf\web.xml <mi ... -
My97DatePicker在Frame中无法打开站点
2013-04-09 17:17 1173大部分日期控件都具备功能如:带时间显示,支持周显示,自定义格式 ... -
jxl导出excel文件简单示例
2013-02-19 11:04 8860package util; import java. ... -
(转)在java中通过JDBC连接Oracle,ResultSet返回总为空,这个问题是怎么解决呢
2013-01-08 10:38 16429数据库基本访问格式 Class.forName(“JDBC驱动 ... -
转:spring多个定时任务quartz配置
2012-11-22 09:07 1539applicationContext.xml <im ...
相关推荐
在多文件上传中,JSP页面会提交表单到一个Servlet,Servlet负责接收文件并进行处理。 3. **Multipart解析器**: 文件上传涉及到二进制数据,不能直接通过HTTP的普通请求来发送。因此,我们需要使用Multipart解析器...
"JSP实现文件上传与下载" JSP(Java Server Pages)是一种动态网页技术,用于开发基于Web的应用程序。...JSP文件上传和下载是Web应用程序中常用的功能,需要注意文件上传和下载的安全性、性能和可扩展性。
"基于jsp的文件上传下载"是Web应用程序中的常见需求,涉及到客户端与服务器之间的数据交互。本项目详细阐述了如何利用JSP实现文件的上传和下载功能。 首先,文件上传涉及的主要技术有HTML表单、Servlet和多部分请求...
本项目专注于解决在JSP中实现文件上传和下载时遇到的一些常见问题,特别是针对中文文件名的处理。下面我们将深入探讨这个主题。 首先,文件上传通常涉及到HTTP协议中的multipart/form-data类型表单。在JSP中,我们...
在本文中,我们将学习如何使用 JSP 实现文件上传和下载功能。在这个过程中,我们将使用 Apache 的 Commons FileUpload 和 Commons IO 两个库来处理文件上传和下载。 首先,让我们了解一下文件上传和下载的基本概念...
在上面的代码中,我们可以看到一个简单的 JSP 文件上传实例。首先,在 index.html 文件中,我们使用了 HTML 表单来上传文件,并将其提交到 do_upload.jsp 文件中。 在 do_upload.jsp 文件中,我们使用了 Java 语言...
自己给修改了一下,做出了一个jsp版的多文件上传功能,客户需要进行多个文件上传:本程序就两个jsp文件,jar包自行下载,tepl.jsp运行后: 点击【增加】后,系统将增加一行上传文件的选择 点击【删除】后,系统...
以上是关于JSP文件上传的基本概念和实现步骤。在实际开发中,应结合具体需求,如文件存储策略、权限控制等,进行更深入的设计和实现。同时,随着技术的发展,现代Web框架如Spring Boot提供了更高级别的抽象,简化了...
本示例主要关注"jsp多文件上传",结合了jQuery和plupload库来实现这一功能。以下是对这些知识点的详细解释: 1. **JSP(JavaServer Pages)**:JSP是Java的一种动态网页技术,它允许开发人员在HTML代码中嵌入Java...
在多文件上传的场景中,JSP主要负责接收和处理来自客户端的文件上传请求。 在"MultifileUploadDemo"中,我们利用了Flash作为前端的上传组件。Flash因其支持多媒体和交互性而被广泛用于创建丰富的互联网应用程序。在...
在网络上找到的,纯JSP实现的文件上传程序,支持多文件的上传,例子是多文件的上传,稍微修改就可以变成单文件的上传或者更多文件的上传,控制成需要扩展名的文件上传,指定大小的文件上传等。程序目前上传文件存储...
"JSP文件上传 支持进度条显示"这个项目是针对JSP环境设计的一个AJAX Web上传程序,它允许用户上传大文件(如单个文件100M),并具有文件上传进度条的可视化功能。以下将详细解析这个项目的知识点: 1. **JSP(Java...
标签进一步强调了关键词“jsp上传”、“jsp多文件上传”和“jsp文件上传”,这些都与文件上传的特定场景有关。在JSP中处理多文件上传意味着组件需要能够处理一个请求中包含的多个文件,并且可能支持并发上传,以提高...
通过这个项目,我们可以深入理解JS和JSP在文件上传过程中的角色和交互。 **前端部分 - JavaScript** 1. **HTML表单设计**:文件上传通常基于`<input type="file">`元素。在HTML中创建一个表单,包含此元素,用户...
在JSP中实现文件上传是一项常见的任务,尤其是在构建Web应用程序时。JSP(JavaServer Pages)是一种基于Java的服务器端脚本语言,用于生成动态网页内容。以下将详细讲解如何在JSP中实现文件上传,并解决如何去除表单...
文件上传是Web应用中常见的功能,比如用户上传头像、提交文档等。本教程将详细介绍如何使用JSP来实现文件上传的功能。 一、理解文件上传原理 文件上传是通过HTTP协议的POST请求实现的。客户端(浏览器)使用表单中...
这个组件允许开发者在JSP或Servlet中方便地实现文件上传功能,支持断点续传、多文件同时上传以及文件大小限制等特性。 在使用jspsmart时,你需要了解以下几个关键知识点: 1. **文件上传原理**:文件上传通常涉及...
在Web开发中,文件上传和下载是常见的功能需求,尤其是在企业级应用和社交网络平台中。本文将深入探讨如何使用Java和JSP(JavaServer Pages)技术实现文件的上传与下载功能。 首先,我们需要理解JSP的基础。JSP是一...
总的来说,理解并掌握JSP文件上传所需的jar包以及如何使用它们是Java Web开发中的一个重要技能。正确配置和使用这些库可以让你的文件上传功能更加健壮、安全和高效。在实践中,还需要注意处理可能出现的异常,如文件...
这个项目标题“关于JSP文件上传下载源代码”表明我们将讨论如何在JSP环境中实现文件上传和下载的功能。 首先,我们需要理解JSP文件上传的基本流程。通常,文件上传是通过HTML表单完成的,表单中包含一个`...