<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    心的方向

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

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

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

      ·Struts 1.2

      ·Spring 1.2.5

      ·Hibernate 3.0

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

      總體實現(xiàn)

      上傳文件保存到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:文件備注。

      文件數(shù)據(jù)存儲在Blob類型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler來處理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle數(shù)據(jù)驅動程序的具體類且屏蔽了不同數(shù)據(jù)庫處理Lob字段方法上的差別,從而撤除程序在多數(shù)據(jù)庫移植上的樊籬。

      1.首先數(shù)據(jù)表中的Blob字段在Java領域對象中聲明為byte[]類型,而非java.sql.Blob類型。

      2.數(shù)據(jù)表Blob字段在Hibernate持久化映射文件中的type為org.springframework.orm.hibernate3.support.BlobByteArrayType,即Spring所提供的用戶自定義的類型,而非java.sql.Blob。

      3.在Spring中使用org.springframework.jdbc.support.lob.OracleLobHandler處理Oracle數(shù)據(jù)庫的Blob類型字段。

      通過這樣的設置和配置,我們就可以象持久化表的一般字段類型一樣處理Blob字段了。

      以上是Spring+Hibernate將文件二進制數(shù)據(jù)持久化到數(shù)據(jù)庫的解決方案,而Struts通過將表單中file類型的組件映射為ActionForm中類型為org.apache.struts.upload. FormFile的屬性來獲取表單提交的文件數(shù)據(jù)。

      綜上所述,我們可以通過圖 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的層次結構劃分為數(shù)據(jù)持久層、業(yè)務層和Web層;WEB-INF下的applicationContext.xml為Spring的配置文件,struts-config.xml為Struts的配置文件,file-upload.jsp為文件上傳頁面,file-list.jsp為文件列表頁面。

      本文后面的章節(jié)將從數(shù)據(jù)持久層->業(yè)務層->W(wǎng)eb層的開發(fā)順序,逐層講解文件上傳下載的開發(fā)過程。
    posted on 2008-04-10 14:48 阿偉 閱讀(344) 評論(1)  編輯  收藏 所屬分類: 框架整合

    FeedBack:
    # re: Struts+Spring+Hibernate實現(xiàn)上傳下載(一)
    2009-03-31 17:54 | yongyuan93139
    怎么沒有粘貼代碼呢  回復  更多評論
      
    主站蜘蛛池模板: 亚洲综合色婷婷在线观看| 亚洲AV无码精品色午夜果冻不卡| 亚洲精品国产手机| 日韩精品人妻系列无码专区免费 | 亚洲综合婷婷久久| 日韩人妻一区二区三区免费| 亚洲国产成人久久精品动漫| 三年片在线观看免费观看大全一 | 最近免费中文字幕mv电影| 亚洲AV福利天堂一区二区三 | 午夜免费不卡毛片完整版| 亚洲精品国产高清在线观看| 日本一道一区二区免费看| 日本激情猛烈在线看免费观看| 亚洲欧洲中文日韩av乱码| 91精品全国免费观看青青| 亚洲AV无码国产精品色午友在线 | 美女视频黄频a免费大全视频| 亚洲 另类 无码 在线| 国产免费人成视频在线播放播 | 国产99在线|亚洲| 日产乱码一卡二卡三免费| 一级中文字幕乱码免费| 亚洲国产精品一区二区久久| 日韩吃奶摸下AA片免费观看 | 国产综合激情在线亚洲第一页 | 一个人免费观看视频www| 亚洲第一se情网站| 亚洲无av在线中文字幕| 亚洲最大免费视频网| 亚洲人成人无码.www石榴 | 亚洲综合男人的天堂色婷婷| 性做久久久久免费看| 99re8这里有精品热视频免费| 亚洲狠狠ady亚洲精品大秀| 夜夜嘿视频免费看| 国产自国产自愉自愉免费24区| 亚洲中文久久精品无码1| 亚洲男人的天堂一区二区| 老汉精品免费AV在线播放| 日本亚洲欧美色视频在线播放|