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

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

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

    飛艷小屋

    程序--人生--哲學(xué)___________________歡迎艷兒的加入

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      52 Posts :: 175 Stories :: 107 Comments :: 0 Trackbacks

     hibernate當(dāng)中使用hql進(jìn)行查詢的時(shí)候,如果參數(shù)是中文,這hql打印為亂碼。以前從來沒有遇到過的問題,郁悶。經(jīng)過無數(shù)次的嘗試之后都無法解 決,查找資料突然發(fā)現(xiàn)這個(gè)hibernate3的一個(gè)bug。在hibernate3當(dāng)中使用antlr來解析hql,估計(jì)是這個(gè)的問題。解決方法為: 1、采用占位符,然后setString 2、將 hibernate.query.factory_class 屬性設(shè)置成 org.hibernate.hql.classic.ClassicQueryTranslatorFactory

    spring中的代碼如下<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
             dependency-check="default"
             lazy-init="default"
             abstract="false"
         >
          <!-- 在SessionFactory類里注入DataSource -->
      <property name="dataSource" ref="dataSource" />
      <property name="hibernateProperties">
       <props>
        <!-- SQL方言-->
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
        <!-- 是否把SQL語句表示出來-->
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
        .......
        <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
       </props>
      </property>
    下載本文源代碼


      引言

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

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

      ·Struts 1.2

      ·Spring 1.2.5

      ·Hibernate 3.0

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

      總體實(shí)現(xiàn)

      上傳文件保存到T_FILE表中,T_FILE表結(jié)構(gòu)如下:


    圖 1 T_FILE表結(jié)構(gòu)

      其中:

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

      ·FILE_NAME:文件名。

      ·FILE_CONTENT:文件內(nèi)容,對(duì)應(yīng)Oracle的Blob類型。

      ·REMARK:文件備注。

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

      1.首先數(shù)據(jù)表中的Blob字段在Java領(lǐng)域?qū)ο笾新暶鳛閎yte[]類型,而非java.sql.Blob類型。

      2.?dāng)?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類型字段。

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

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

      綜上所述,我們可以通過圖 2,描繪出SSH處理文件上傳的方案:


    圖 2 SSH處理文件上傳技術(shù)方案

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


    圖 3 文件上傳頁面

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


    圖 4 文件下載頁面

      該工程的資源結(jié)構(gòu)如圖 5所示:


    圖 5 工程資源結(jié)構(gòu)

      工程的類按SSH的層次結(jié)構(gòu)劃分為數(shù)據(jù)持久層、業(yè)務(wù)層和Web層;WEB-INF下的applicationContext.xml為Spring的配置文件,struts-config.xml為Struts的配置文件,file-upload.jsp為文件上傳頁面,file-list.jsp為文件列表頁面。

      本文后面的章節(jié)將從數(shù)據(jù)持久層->業(yè)務(wù)層->W(wǎng)eb層的開發(fā)順序,逐層講解文件上傳下載的開發(fā)過程。
    posted on 2007-04-09 17:21 天外飛仙 閱讀(582) 評(píng)論(0)  編輯  收藏 所屬分類: spring

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃图片| 色吊丝免费观看网站| 免费在线观看的网站| 在线观看亚洲网站| 国产精品亚洲а∨无码播放| 69天堂人成无码麻豆免费视频| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲色成人中文字幕网站| xx视频在线永久免费观看| 国产亚洲精彩视频| 亚洲四虎永久在线播放| 国产精品四虎在线观看免费| a毛片久久免费观看| 亚洲伊人久久大香线蕉AV| 亚洲欧洲精品无码AV| 免费看韩国黄a片在线观看| eeuss免费天堂影院| 亚洲一区二区三区深夜天堂| 亚洲片一区二区三区| 国产成人A在线观看视频免费 | 亚洲第一街区偷拍街拍| 国产偷v国产偷v亚洲高清| 日本视频免费在线| 99精品视频免费观看| 一级一黄在线观看视频免费| 亚洲va乱码一区二区三区| 亚洲乱码一区二区三区在线观看| 成人男女网18免费视频| 久久久久久免费一区二区三区| 羞羞视频免费网站含羞草| 亚洲三级在线播放| 亚洲AV日韩AV永久无码下载| 亚洲第一视频在线观看免费| 青草草色A免费观看在线| 七色永久性tv网站免费看| 国产亚洲综合视频| 国产精品无码亚洲精品2021 | 亚洲精品高清视频| 一本色道久久88综合亚洲精品高清 | 青青草国产免费国产是公开| 亚洲欧洲日本在线观看|