心的方向

          新的征途......
          posts - 75,comments - 19,trackbacks - 0
          轉自:http://lihaiyan.javaeye.com/blog/127794
          引言

            文件的上傳和下載在
          J2EE編程已經是一個非常古老的話題了,也許您馬上就能掰著指頭數出好幾個著名的大件:如SmartUpload、Apache的FileUpload。但如果您的項目是構建在Struts+Spring+Hibernate(以下稱SSH)框架上的,這些大件就顯得笨重而滄桑了,SSH提供了一個簡捷方便的文件上傳下載的方案,我們只需要通過一些配置并輔以少量的代碼就可以完好解決這個問題了。

            本文將圍繞SSH文件上傳下載的主題,向您詳細講述如何開發基于SSH的Web程序。SSH各框架的均為當前最新版本:

            ·Struts 1.2

            ·Spring 1.2.5

            ·Hibernate 3.0

            本文選用的數據庫為
          Oracle 9i,當然你可以在不改動代碼的情況下,通過配置文件的調整將其移植到任何具有Blob字段類型的數據庫上,如MySQL,SQLServer等。

            總體實現

            上傳文件保存到T_FILE表中,T_FILE表結構如下:

          420){this.resized=true;this.style.width=420;}" border=0>
          圖 1 T_FILE表結構

            其中:

            ·FILE_ID:文件ID,32個字符,用Hibernate的uuid.hex算法生成。

            ·FILE_NAME:文件名。

            ·FILE_CONTENT:文件內容,對應Oracle的Blob類型。

            ·REMARK:文件備注。

            文件數據存儲在Blob類型的FILE_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所提供的用戶自定義的類型,而非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,描繪出SSH處理文件上傳的方案:

          420){this.resized=true;this.style.width=420;}" border=0>
          圖 2 SSH處理文件上傳技術方案

            文件上傳的頁面如圖 3所示:

          420){this.resized=true;this.style.width=420;}" border=0 resized="true">
          圖 3 文件上傳頁面

            文件下載的頁面如圖 4所示:

          420){this.resized=true;this.style.width=420;}" border=0 resized="true">
          圖 4 文件下載頁面

            該工程的資源結構如圖 5所示:

          420){this.resized=true;this.style.width=420;}" border=0>
          圖 5 工程資源結構

            工程的類按SSH的層次結構劃分為數據持久層、業務層和Web層;WEB-INF下的applicationContext.xml為Spring的配置文件,struts-config.xml為Struts的配置文件,file-upload.jsp為文件上傳頁面,file-list.jsp為文件列表頁面。

            本文后面的章節將從數據持久層->業務層->Web層的開發順序,逐層講解文件上傳下載的開發過程。
          posted on 2008-04-10 14:48 阿偉 閱讀(346) 評論(1)  編輯  收藏 所屬分類: 框架整合

          FeedBack:
          # re: Struts+Spring+Hibernate實現上傳下載(一)
          2009-03-31 17:54 | yongyuan93139
          怎么沒有粘貼代碼呢  回復  更多評論
            
          主站蜘蛛池模板: 和静县| 阿荣旗| 南昌县| 象山县| 高台县| 海南省| 许昌县| 凤山县| 嘉禾县| 射阳县| 诸暨市| 西吉县| 大渡口区| 阜新市| 德格县| 伊春市| 区。| 洮南市| 名山县| 集安市| 章丘市| 宁陕县| 兴和县| 安福县| 武强县| 集安市| 十堰市| 伊宁市| 前郭尔| 静乐县| 陈巴尔虎旗| 青铜峡市| 镇宁| 太保市| 库尔勒市| 白沙| 大渡口区| 兴化市| 桐乡市| 成安县| 石泉县|