国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts+Hibernate簡化J2EE的文件操作

2019-11-18 11:02:15
字體:
來源:轉載
供稿:網友

  1. 引言

  每位Web開發者在工程中都必須實現至少實現一個客戶文件的上載功能。永遠需要!然而,要求用戶僅提供一個指向其數據的URL是不公平的。作為一個開發者,幫助用戶順利地完成這些正是你的工作。HTTP協議的使用將十分有助于解決這個問題,但是許多開發者并沒有選擇使用HTTP協議。

  你需要解決的問題有:存儲上載的文件并找到關于問題"Where?","Why?"和"How?"等等的有關答案。

  本文將解釋所有在解決這些問題中碰到的瓶頸,并提供了功能性的、易于理解的代碼,這些內容很可能會應用于你將來的工程中。

  2. 預備工作

  本文將使用當前最流行的開發工具,它們是:

  ·應用程序服務器:WebLogic 8.1 SP3服務器

  ·基于java的構建工具:Apache Ant 1.6.2

  ·數據庫服務器:MySQL 4.0.16

  ·用于從Java連接到MySQL的:MySQL Connector/J 3.1.7

  Struts 1.2.4用作構建Java Web應用程序的框架,而Hibernate 3.0(RC1)用于對象/關系持續性操作和查詢服務。

  本文雖然基于Windows平臺寫成,但在其它操作系統之上,應該稍作修改就能運行。

  另外,讀者還應熟悉BEA WebLogic服務器以及使用Struts和Hibernate進行J2EE應用程序的開發。篇幅所限,本文并沒有討論關于應用程序和數據庫服務器配置的問題。

  3. 上載工程分析

  現在讓我們討論存儲上載文件的機制,并回答上面列出的三個問題。

  ·Where?你將會把上載文件存儲到一個數據庫中。

  ·Why?在許多情況下,它確實是合適的解決方案。使用本文的解決方案,你不會因同步上載文件而煩惱,一旦你正在備份著應用程序-你只需要備份數據庫就可以了。而且,你不需要與一個用戶及其在一文件系統上的文件一直保持十分笨拙的聯系。

  ·How?可以使用BLOB(二進制大型對象)字段實現。這樣的字段用于存儲大型的并且經常是原始或二進制的格式。Hibernate可以使你非常輕易地操作這些字段。

  典型情況下,一個企業應用程序(EAR)由兩部分組成:Web層(WAR)和商業層(EJB)。商業層包含一個無狀態的會話bean-它借助于Hibernate的幫助實現數據的存儲。圖1顯示了EJB的遠程接口。

Struts+Hibernate簡化J2EE的文件操作(圖一)
圖1.Hellosession EJB的接口。

  從Web層角度看,這個EJB為商業代理所存取。

  注重,該代碼使用了一個類User的對象。User代表什么意思?它是一個保留在數據庫中的用戶實體的"Plain Old Java Object"(POJO)。你將會活躍地使用這個UserPOJO。設置它的屬性并請求EJB來存儲它,然后帶回一個所有的已存在于數據庫中的User實體的列表。或者,由它取回一個專門的User實體并存入POJO中,然后使用一個getter存取器來存取它的屬性(見圖2)。

Struts+Hibernate簡化J2EE的文件操作(圖二)
圖2.所有的Web層的servlet都使用該User POJO。

  非常明顯,Web層僅由三個servlet(Struts Action的)組成,一個用于上載文件,一個用于下載文件,一個用于列出所有的User實體及其相關文件。

  ·DownloadFileAction:該servlet僅使用一個參數id,這是在數據庫中的一個用戶的id。然后,它裝入該用戶的實體并把該文件從BLOB字段傳遞到ServletOutputStream。

  ·UploadFileAction:該servlet負責從一個Html表單中提取數據并用這些數據進一步生成DynaActionForm。它僅提取用戶名和上載的文件。

  ·ListAllFilesAction:該servlet沒有輸入參數或數據,僅負責從數據庫中裝入所有可用的用戶User實體。 4. 環境預備

  假如所有相應的軟件被正確下載并安裝在你的PC上,那么下一步,你就可以預備數據庫和存取該數據庫的用戶而且還要使用名為MySqlDS的JNDI設置好連接池與數據源。同時,請肯定MySQL Connector/J存在于你的類路徑中!要檢查這一點,只需輸入:

echo %CLASSPATH%

  文件mysql-connector-java-3.1.7-bin.jar(帶有完整的路徑)應該于此。這是必需的,因為WebLogic需要查找到MySQL Connector/J并用該驅動程序進行工作。

  現在,既然一切預備妥當,我們就可以在數據庫中創建一個表以用于保存用戶實體。以任何MySQL客戶身份登錄到該數據庫,然后輸入:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富阳市| 吉林市| 商水县| 泰兴市| 临潭县| 通城县| 绥阳县| 贵德县| 汝阳县| 衡阳县| 昭平县| 封丘县| 岳阳县| 桑日县| 凤山市| 本溪| 留坝县| 揭西县| 郸城县| 化德县| 陇西县| 江门市| 乌兰察布市| 祥云县| 泰顺县| 独山县| 兴和县| 宜川县| 扶风县| 襄汾县| 绍兴市| 敖汉旗| 马边| 辽阳市| 肃宁县| 万宁市| 即墨市| 随州市| 仁化县| 龙州县| 汉川市|