欢迎来到天天文库
浏览记录
ID:47917290
大小:278.00 KB
页数:20页
时间:2019-10-29
《Struts+Spring+Hibernate实现上传下载》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Struts+Spring+Hibernate实现上传下载引言 文件的上传和下载在J2EE编程已经是一个非常古老的话题了,也许您马上就能掰着指头数出好几个著名的大件:如SmartUpload、Apache的FileUpload。但如果您的项目是构建在Struts+Spring+Hibernate(以下称SSH)框架上的,这些大件就显得笨重而沧桑了,SSH提供了一个简捷方便的文件上传下载的方案,我们只需要通过一些配置并辅以少量的代码就可以完好解决这个问题了。 本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本: ·Struts1.
2、2 ·Spring1.2.5 ·Hibernate3.0 本文选用的数据库为Oracle9i,当然你可以在不改动代码的情况下,通过配置文件的调整将其移植到任何具有Blob字段类型的数据库上,如MySQL,SQLServer等。 总体实现 上传文件保存到T_FILE表中,T_FILE表结构如下:图1T_FILE表结构 其中: ·FILE_ID:文件ID,32个字符,用Hibernate的uuid.hex算法生成。 ·FILE_NAME:文件名。 ·FILE_CONTENT:文件内容,对应Oracle的Blob类型。 ·REMARK:文件备注。 文件数据存储在Blob类型的F
3、ILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的差别,从而撤除程序在多数据库移植上的樊篱。 1.首先数据表中的Blob字段在Java领域对象中声明为byte[]类型,而非java.sql.Blob类型。 2.数据表Blob字段在Hibernate持久化映射文件中的type为org.springframework.orm.hibernate3.support.BlobByteArrayType,即Spring所提供的用
4、户自定义的类型,而非java.sql.Blob。 3.在Spring中使用org.springframework.jdbc.support.lob.OracleLobHandler处理Oracle数据库的Blob类型字段。 通过这样的设置和配置,我们就可以象持久化表的一般字段类型一样处理Blob字段了。 以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload.FormFile的属性来获取表单提交的文件数据。 综上所述,我们可以通过图2,
5、描绘出SSH处理文件上传的方案:图2SSH处理文件上传技术方案 文件上传的页面如图3所示:图3文件上传页面 文件下载的页面如图4所示:图4文件下载页面 该工程的资源结构如图5所示:图5工程资源结构 工程的类按SSH的层次结构划分为数据持久层、业务层和Web层;WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。 本文后面的章节将从数据持久层->业务层->Web层的开发顺序,逐层讲解文件上传下载的开发过程
6、。 数据持久层 1、领域对象及映射文件 您可以使用HibernateMiddlegen、HIbernateTools、HibernateSyhchronizer等工具或手工的方式,编写Hibernate的领域对象和映射文件。其中对应T_FILE表的领域对象Tfile.java为: 代码1领域对象Tfile1.packagesshfile.model;2.publicclassTfile3.{4.privateStringfileId;5.privateStringfileName;6.privatebyte[]fileContent;7.privateStringremark;8.…/
7、/getterandsetter9.} 特别需要注意的是:数据库表为Blob类型的字段在Tfile中的fileContent类型为byte[]。Tfile的Hibernate映射文件Tfile.hbm.xml放在Tfile.java类文件的相同目录下: 代码2领域对象映射文件1.<?xmlversion="1.0"?>2.<!DOCTYPEhibernate-mappingPUBLIC3."-
此文档下载收益归作者所有