已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 1 摘 要 隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展和 J2EE 平臺的廣泛應(yīng)用,基于 B/S 的多層 WEB體系結(jié)構(gòu)正在不斷的完善。 WEB 技術(shù)的發(fā)展推動了信息化的發(fā)展,使人們能夠不再受地理空間的限制與其他人進行信息的交流與共享。而開發(fā)這樣一個信息交流平臺,正是本論文要著手處理的問題。 其實,就算用 Java 建造一個不是很煩瑣的 web 應(yīng)用程序,也不是件輕松的事情。當(dāng)為一個應(yīng)用程序建造一個構(gòu)架時有許多事情需要考慮。從高層來說,開發(fā)者需要考慮:怎樣建立用戶接口( user interfaces) ? 在哪里處理業(yè)務(wù)邏輯?和怎樣持久化應(yīng)用數(shù)據(jù)。這三 層每一層都有它們各自的問題需要回答。各個層次應(yīng)該使用什么技術(shù)?怎樣才能把應(yīng)用程序設(shè)計得松耦合和能靈活改變 ? 構(gòu)架允許層的替換不會影響到其它層嗎?應(yīng)用程序怎樣處理容器級的服務(wù)( container level services),比如事務(wù)處理( transactions) ? 本論文正是基于上述問題出發(fā),以開發(fā)一個信息交流平臺系統(tǒng)為背景,對基于 MVC 模式的 Struts 框架、 Hibernate 的 ORM 機制和對持久對象持久化的管理以及 Spring IoC(控制反轉(zhuǎn))技術(shù)進行了探討。并整合這三種框架: 表現(xiàn)層使用Struts; 業(yè)務(wù)層使用 Spring; 持久層使用 Hibernate 進行系統(tǒng)的開發(fā)。最后結(jié)合具體的事例對系統(tǒng)的實現(xiàn)作了詳細的說明,驗證了實現(xiàn)方法的可行性。 關(guān)鍵詞 : J2EE Struts Hibernate Spring 模式 框架 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 2 Abstract With the rapid development of network technology and the wide use of J2EE platform, the multilayer web structure base on B/S has developed gradually. WEB techniques development has promoted the development of informationization, it has made people can communicate and share information without area and space limitation. However, developing such kind of information communication p latform is just the case in this thesis. Building non-trivial web applications with Java is no trivial task. There are many things to consider when structuring architecture to house an application. From a high-level, developers are faced with decisions about how they are going to construct user interfaces, where the business logic will reside, and how to persist application data. Each of these three layers has their own questions to be answered. What technologies should be implemented across each layer? How can the application be designed so that it is loosely coupled and flexible to change? Does the architecture allow layers to be replaced without affecting other layers? How will the application handle container level services such as transactions? This thesis is just base on these questions, taking an information communication platform system development as background, based on MVC architecture, discussed Struts frame, Hibernators ORM mechanism, persistent management of persistent object and Spring IoC technique and combining frameworks using three popular open source frameworks: For the presentation layer we will use Struts; for our business layer we will use Spring; and for our persistence layer we will use Hibernate to developing this system. At the end of the thesis, illustrate the way of realizing the system by an instance, and validate its feasibility. Key words: J2EE Struts Hibernate Spring Pattern Framework 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 3 摘 要 .1 ABSTRACT .2 第 1 章 概述 .5 1.1 課題研究目的和意義 .5 1.2 研究內(nèi)容 .6 第 2 章 開發(fā)涉及的相關(guān)技術(shù) .7 2.1 MYSQL 數(shù)據(jù)庫設(shè)計工具介紹 .7 2.2 MYECLIPSE 設(shè)計工具 .7 2.3 STRUTS2 開發(fā)工具 .8 2.4 SPRING 技術(shù)簡介 .9 2.5 JAVASCRIPT 技術(shù)簡介 . 10 第 3 章 手機短信分享系統(tǒng)概述及需求分析 . 11 3.1手機短信分享系統(tǒng)概述 . 11 3.2手機短信分享系統(tǒng)需求分析 . 11 第 4 章 手機短信分享系統(tǒng)的詳細設(shè)計 . 12 4.1 框架分析 . 12 4.2 功能模塊簡介 . 14 4.3 數(shù)據(jù)模型設(shè)計和數(shù)據(jù)庫設(shè)計 . 17 4.3.3 持久層的實現(xiàn) . 24 4.3.4 O/R 映射 . 24 4.3.5 DAO 數(shù)據(jù)訪問接口 . 25 4.3.6 DAO 數(shù)據(jù)訪問實現(xiàn) . 25 4.4 業(yè)務(wù)層的實現(xiàn) . 26 4.4.1 業(yè)務(wù)邏輯處理類的實現(xiàn) . 26 4.5 表示層的實現(xiàn) . 27 4.6 View 層的實現(xiàn) . 28 4.7 Model 層的實現(xiàn) . 29 4.8 Controller 層的實現(xiàn) . 29 第 5 章 手機短信分享系統(tǒng)的界面實現(xiàn) . 31 5.1 系統(tǒng)首頁 . 31 5.2 精品鈴聲 . 33 5.3 手機主題 . 37 5.4 圖片下載 . 39 5.5 游戲下載 . 42 5.5 短信下載 . 44 第 6 章 手機短信分享系統(tǒng)測試 . 45 6.1 測試概述 . 45 6.2 黑盒測試 . 45 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 4 總結(jié)與展望 . 46 7.1 本文的總結(jié)與展望 . 46 參考文獻 . 47 致謝 . 49 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 5 第 1 章 概述 1.1 課題 研究目的和意義 從來沒有任何事物的發(fā)展像互聯(lián)網(wǎng)那樣,對人類的活動產(chǎn)生如此深刻的影響。人們越來越依賴于 Internet 進行信息的交流與共享。 隨著網(wǎng)絡(luò)的飛速發(fā)展,信息交流平臺在網(wǎng)絡(luò)上扮演角色越來越重要了。信息交流平臺 從她誕生的那一刻起就帶有十分明確的個性化的人文色彩,作為一種遠程電子通訊手段, 信息交流平臺 允許一定范圍內(nèi)的用 戶以十分廉價的方式,方便快捷地進行信息和文件資源的共享,以信件和電子討論的形式進行交流。 毫不夸張的說,信息交流平臺是網(wǎng)民互動溝通的最佳紐帶 , 是互聯(lián)網(wǎng)的靈魂 。 信息交流平臺 已成為主流網(wǎng)民不可缺少的一項基本生活內(nèi)容 。它 在新興的電子文化、信息咨詢和商業(yè)服務(wù)領(lǐng)域 也勢必蘊藏 巨大 的 市場 。比如信息交流平臺提供的 信息布告區(qū) 可為企業(yè)發(fā)布它的 產(chǎn)品介紹、推廣、宣傳、服務(wù) 等信息,能把企業(yè)的新產(chǎn)品快速的推向市場。 所以對信息交流平臺的研究是完全有必要的。 J2EE 是 Sun ONE 的重量級產(chǎn)品,作為一種企業(yè)級 Web 應(yīng)用程序開發(fā) 技術(shù), J2EE 是目前唯一在市場上得到了廣泛應(yīng)用的技術(shù)體系。 J2EE 以 Java 為核心技術(shù),更接近或者滿足于互聯(lián)網(wǎng)在智能化 Web 服務(wù)上對分布性、開放性和平臺無關(guān)性的要求,同時它在安全性、健壯性、組件化等方面也更為成熟穩(wěn)定,獲得了眾多 IT 廠商如 IBM、 Oracle、BEA 等共同制定標(biāo)準并提供技術(shù)支持,因此具有強大的功能,是電子商務(wù)、遠程教育等開發(fā)的首選平臺。但是,即使我們用先進的 J2EE 來開發(fā) Web 應(yīng)用,也面臨著許多問題需要考慮: 怎樣建立用戶接口( user interfaces) ? 在哪里處理業(yè)務(wù) 邏輯和怎樣持久化應(yīng)用數(shù)據(jù) ? Struts、 Spring、 Hibernate 這三個基于 WEB應(yīng)用開發(fā)的開源框架,可以為我們解決這些問題。如何把一個 WEB 應(yīng)用分層而整合 Struts、 Spring、 Hibernate 技術(shù),盡可能的將頁面顯示、業(yè)務(wù)邏輯和數(shù)據(jù)處理相分離,最大限度地降低系統(tǒng)各模塊之間的耦合性,從而增強系統(tǒng)的可擴展性與可維護性,提高代碼重用率,使系統(tǒng)的層次結(jié)構(gòu)更加清晰,易于開發(fā)人員的分工協(xié)作,充分發(fā)揮開發(fā)人員的各自特長,這是一個值得研究探討的問題。 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 6 Struts 是基于 MVC 模式的框架技術(shù) 。采用 Struts 可以簡化遵循 MVC 設(shè)計模式的 Web 應(yīng)用的開發(fā)工作,很好的實現(xiàn)代碼重用,使開發(fā)人員從繁瑣的工作中解脫出來,快速開發(fā)具有強可擴展性的 Web 應(yīng)用,大大簡化開發(fā)過程,縮短開發(fā)周期,提高開發(fā)效率。 Hibernate 是一項新興的 ORM 技術(shù),它把普通 java 對象映射到關(guān)系數(shù)據(jù)庫表,并提供對對象的持久化操作。使得 Java 開發(fā)者能夠高效地對關(guān)系數(shù)據(jù)庫表進行增、刪、改、查操作而不用直接面對 JDBC、 SQL 語句,讓開發(fā)人員把精力集中在如何解決實際業(yè)務(wù)處理問題上。而借助于 Spring IoC 和AOP,使得應(yīng)用中對象的關(guān)系 更加清晰、一致,而且還使得一切對象可控。最重要的一點是,對象本身的生命周期及對象之間的關(guān)系不用再讓開發(fā)者費神了。 基于上述分析,研究實現(xiàn) Struts、 Spring、 Hibernate 三個框架的整合來解決Web 應(yīng)用開發(fā)中所面臨的上述問題,從而提高程序的開發(fā)效率,增強系統(tǒng)的可擴展性與可維護性,提高代碼重用率將會是一個很有意義的課題。 1.2 研究內(nèi)容 以 J2EE 為基礎(chǔ) 實現(xiàn)一個 手機短信共享 平臺為出發(fā)點 ,設(shè)計了一個整合 SSH技術(shù)的架構(gòu) , 并分別用 Struts、 Hibernate、 Spring 實現(xiàn)了表示層 ,業(yè)務(wù)層 ,持久層,最終完成了本系統(tǒng)。 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 7 第 2 章 開發(fā)涉及的相關(guān)技術(shù) 2.1 MySql 數(shù)據(jù)庫設(shè)計工具介紹 MySQL 是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典 MySQLAB 公司,在 2008 年 1 月 16 號被 Sun 公司收購。 MySQL 被廣泛地應(yīng)用在 Internet 上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了 MySQL 作為網(wǎng)站數(shù)據(jù)庫。 MySQL 的海豚標(biāo)志的名字叫“ sakila”,它是由 MySQL AB 的創(chuàng)始人從用戶在“海豚命 名”的競賽中建議的大量的名字表中選出的。獲勝的名字是由來自非洲斯威士蘭的開源軟件開發(fā)者 Ambrose Twebaze 提供。根據(jù) Ambrose 所說, Sakila來自一種叫 SiSwati 的斯威士蘭方言,也是在 Ambrose 的家鄉(xiāng)烏干達附近的坦桑尼亞的 Arusha 的一個小鎮(zhèn)的名字。 1. 使用 C 和 C+編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性 2. 支持 AIX、 FreeBSD、 HP-UX、 Linux、 Mac OS、 Novell Netware、 OpenBSD、OS/2 Wrap、 Solaris、 Windows 等多種操作系統(tǒng) 3. 為多種編程語言提供了 API。這些編程語言包括 C、 C+、 Eiffel、 Java、Perl、 PHP、 Python、 Ruby 和 Tcl 等。 4. 支持多線程,充分利用 CPU 資源 5. 優(yōu)化的 SQL 查詢算法,有效地提高查詢速度 6. 既能夠作為一個單獨的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的 GB 2312、 BIG5,日文的 Shift_JIS 等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名 7. 提供 TCP/IP、 ODBC 和 JDBC 等多種數(shù)據(jù)庫連接途徑 8. 提供用于管理、檢查、 優(yōu)化數(shù)據(jù)庫操作的管理工具 9. 可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫 2.2 MyEclipse 設(shè)計工具 MyEclipse 企業(yè)級工作平臺( MyEclipse Enterprise Workbench ,簡稱MyEclipse)是對 Eclipse IDE 的擴展,利用它我們可以在數(shù)據(jù)庫和 J2EE 的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE 集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持 HTML, 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 8 Struts, JSF, CSS, Javascript, SQL, Hibernate。在結(jié)構(gòu)上, MyEclipse 的特征可以被分為 7 類: 1. J2EE 模型 2. WEB 開發(fā)工具 3. EJB 開發(fā)工具 4. 應(yīng)用程序服務(wù)器的連接器 5. J2EE 項目部署服務(wù) 6. 數(shù)據(jù)庫服務(wù) 7. MyEclipse 整合幫助 對于以上每一種功能上的類別,在 Eclipse 中都有相應(yīng)的功能部件,并通過一系列的插件來實現(xiàn)它們。 MyEclipse 結(jié)構(gòu)上的這種模塊化,可以讓我們在不影響其他模塊的情況下,對任一模塊進行單獨的擴展和升級。 簡單而言, MyEclipse 是 Eclipse 的插件,也是一款功能強大的 J2EE 集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯。 MyEclipse7.0 的發(fā)布意味著我們不再需要配置 Tomcat 以及服務(wù)器了,你所需要做的僅僅是安裝 MyEclipse 7.0。 7.0 發(fā)行版包括在 7.0M2 和 6.6 版本基礎(chǔ)上對 bug 的修復(fù)和功能的加強。提供的支持包括: Eclipse 3.4.1/Ganymede、 REST web 服務(wù)、新的 myeclipse 操作板、 spring 工具集更新、集成 Manven2、 open JPA支持、高級 javascript 工具、 專業(yè)的 jsdt 實現(xiàn)、報表工具加強、 jsf 和 ICEfaces工具更新。 2.3 Struts2 開發(fā) 工具 Struts2 號稱是一個全新的框架,但這僅僅是相對 Struts 1 而言。 Struts 2 與 Struts 1 相比,確實有很多革命性的改進,但它并不是新發(fā)布的新框架,而是在另一個赫赫有名的框架: WebWork 基礎(chǔ)上發(fā)展起來的。從某種程度上來講,Struts2 沒有繼承 Struts 1 的血統(tǒng),而是繼承 WebWork 的血統(tǒng)?;蛘哒f, WebWork衍生出了 Struts2,而不是 Struts 1 衍生了 Struts2。 因為 Struts2 是 WebWork的升級,而不是一個全新的框架,因此穩(wěn)定性、性能等各方面都有很好的保證:而且吸收了 Struts 1 和 WebWork 兩者的優(yōu)勢,因此,是一個非常值得期待的框架。 Apache Struts2 是一個優(yōu)雅的,可擴展的 JAVA EE web 框架??蚣茉O(shè)計的目標(biāo)貫穿整個開發(fā)周期,從開發(fā)到發(fā)布,包括維護的整個過程。 Apache Struts 2 即是之前大家所熟知的 WebWork 2。在經(jīng)歷了幾年的各自發(fā)展后, WebWork 和 Struts 社區(qū)決定合二為一,也即是 Struts 2 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 9 2.4 Spring 技術(shù)簡介 Spring 是一個開源框架,它由 Rod Johnson 創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。 Spring 使用基本的 JavaBean 來完成以前只可能由 EJB完成的事情。然而, Spring 的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何 Java 應(yīng)用都可以從 Spring 中受益。 目的:解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性 功能:使用基本的 JavaBean 代替 EJB,并提供了更多的企業(yè)應(yīng)用功能 范圍:任何 Java 應(yīng)用 簡單來說, Spring 是一個 輕量級的控制反轉(zhuǎn) (IoC)和面向切面 (AOP)的容器框架。 輕量 從大小與開銷兩方面而言 Spring 都是輕量的。完整的Spring 框架可以在一個大小只有 1MB 多的 JAR 文件里發(fā)布。并且 Spring 所需的處理開銷也是微不足道的。此外, Spring 是非侵入式的:典型地, Spring 應(yīng)用中的對象不依賴于 Spring 的特定類。 控制反轉(zhuǎn) Spring 通過一種稱作控制反轉(zhuǎn)( IoC)的技術(shù)促進了松耦合。當(dāng)應(yīng)用了 IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創(chuàng)建或者查找依賴對 象。你可以認為 IoC 與 JNDI 相反 不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。 面向切面 Spring 提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計( auditing)和事務(wù)( transaction)管理)進行內(nèi)聚性的開發(fā)。應(yīng)用對象只實現(xiàn)它們應(yīng)該做的 完成業(yè)務(wù)邏輯 僅此而已。它們并不負責(zé)(甚至是意識)其它的系統(tǒng)級關(guān)注點,例如日志或事務(wù)支持。 容器 Spring 包含并管理應(yīng)用對象的配置和生命周期,在這個意義上它是一 種容器,你可以配置你的每個 bean 如何被創(chuàng)建 基于一個可配置原型( prototype),你的 bean 可以創(chuàng)建一個單獨的實例或者每次需要時都生成一個新的實例 以及它們是如何相互關(guān)聯(lián)的。然而, Spring 不應(yīng)該被混同于傳統(tǒng)的重量級的 EJB 容器,它們經(jīng)常是龐大與笨重的,難以使用。 框架 Spring 可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring 中,應(yīng)用對象被聲明式地組合,典型地是在一個 XML 文件里。 Spring 也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 10 給了你。 所有 Spring 的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為 Spring 中的各種模塊提供了基礎(chǔ)支持。 2.5 JavaScript 技術(shù)簡介 Hibernate 是一個開放源代碼的對象關(guān)系映射框架,它對 JDBC 進行了非常輕量級的對象封裝,使得 Java 程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate 可以應(yīng)用在任何使用 JDBC 的場合,既可以在 Java 的客戶端程序使用,也可以在 Servlet/JSP 的 Web 應(yīng)用中使用,最具革命意義的是,Hibernate 可以在應(yīng) 用 EJB 的 J2EE 架構(gòu)中取代 CMP,完成數(shù)據(jù)持久化的重任。 Hibernate 的核心接口一共有 5 個,分別為 :Session、 SessionFactory、Transaction、 Query 和 Configuration。這 5 個核心接口在任何開發(fā)中都會用到。通過這些接口,不僅可以對持久化對象進行存取,還能夠進行事務(wù)控制。下面對這五個核心接口分別加以介紹。 Session接口 :Session接口負責(zé)執(zhí)行被持久化對象的 CRUD操作 (CRUD的任務(wù)是完成與數(shù)據(jù)庫的交流,包含了很多常見的 SQL語句。 )。但需要注意的是 Session對象是非線程安全的。同時, Hibernate 的 session 不同于 JSP 應(yīng)用中的HttpSession。這里當(dāng)使用 session 這個術(shù)語時,其實指的是 Hibernate 中的session,而以后會將 HttpSesion 對象稱為用戶 session。 SessionFactory 接口 :SessionFactory 接口負責(zé)初始化 Hibernate。它充當(dāng)數(shù)據(jù)存儲源的代理,并負責(zé)創(chuàng)建 Session 對象。這里用到了工廠模式。需要注意的是 SessionFactory 并不是輕量級的,因為一般情況下,一個項目通 常只需要一個 SessionFactory 就夠,當(dāng)需要操作多個數(shù)據(jù)庫時,可以為每個數(shù)據(jù)庫指定一個 SessionFactory。 Configuration 接口 :Configuration 接口負責(zé)配置并啟動 Hibernate,創(chuàng)建SessionFactory 對象。在 Hibernate 的啟動的過程中, Configuration 類的實例首先定位映射文檔位置、讀取配置,然后創(chuàng)建 SessionFactory 對象。 Transaction 接口 :Transaction 接口負責(zé)事務(wù)相關(guān)的操作。它是可選的,開發(fā)人員也可以設(shè)計編 寫自己的底層事務(wù)處理代碼。 Query 和 Criteria 接口 :Query 和 Criteria 接口負責(zé)執(zhí)行各種數(shù)據(jù)庫查詢。它可以使用 HQL 語言或 SQL 語句兩種表達方式。 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 11 第 3 章 手機短信分享系統(tǒng) 概述及需求分析 3.1 手機短信分享系統(tǒng) 概述 手機短信分享系統(tǒng) 是一個對 手機短信和相應(yīng)服務(wù) 進行分享 的 信息 管理系統(tǒng),它包含 了音樂鈴聲 模塊、 手機主題 模 塊、 手機圖片下載 模 塊 、手機游戲 模 塊 、后臺管理 模 塊 和 手機短信 模塊 這六 個功能模塊 。 網(wǎng)站中都是關(guān)于手機服務(wù)的模塊 ,業(yè)務(wù)中 包括 對相應(yīng)服務(wù)的點擊量、更新時間等信息的統(tǒng)計, 可以通過這些 信息把動態(tài)的根據(jù)需求顯示在頁面上。 使用戶更能清晰的根據(jù)自己的需求找到相應(yīng)的服務(wù)和需求。 手機短信分享系統(tǒng) 是一個基于 B/S 的多層 WEB 應(yīng)用系統(tǒng),主要為上網(wǎng)手機用戶提供了一個信息交流的平臺。用戶可以根據(jù)需要在分享同上下載資源,并且可以發(fā)表評論,提出問題并表達自己的觀點。同時也可以查閱他人的評論等。 3.2 手機短信分享系統(tǒng) 需求分析 需求分析是指,需求分析人員將客戶描述的需求用計算機語言描述出來,分析用戶的需求是否能實現(xiàn),是否還可以提交更多的功能。要開發(fā)一個軟件產(chǎn)品,最首要也是最重要的就是需求分析,它是決定一個系統(tǒng) 成功與否的關(guān)鍵。 對于開發(fā)一個 分享 系統(tǒng),首先需要確定它能提供那些功能。用戶使用 分享 系統(tǒng)是按照一定的流程來進行的:用戶 進入分享 系統(tǒng),可以查詢 需要的 查看 信息、查閱 服務(wù) 、 評論服務(wù)內(nèi)容 、管理員要對 分享 系統(tǒng)進行管理 ,系統(tǒng)要具有創(chuàng)建、編輯、刪除版塊,管理 的用戶,管理 信息 和設(shè)置的功能等 1.根據(jù)服務(wù)分類顯示服務(wù)。 2.根據(jù)點擊量顯示服務(wù)內(nèi)容 3.根據(jù)更新時間顯示服務(wù)內(nèi)容 4.個性化界面定制 5.根據(jù)搜索顯示服務(wù)內(nèi)容。 6.根據(jù)推薦用戶顯示服務(wù)內(nèi)容 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 12 第 4 章 手機短信分享系統(tǒng) 的詳細設(shè)計 詳細設(shè)計階段的根本 任務(wù)是確定怎樣具體的實現(xiàn)要求的目標(biāo)系統(tǒng),也就是說,經(jīng)過這個階段的設(shè)計工作,應(yīng)該寫出對系統(tǒng)的精確描述,從而在編輯階段可以把這個描述直接翻譯成用某種程序設(shè)計語言書寫的程序。此階段要設(shè)計出程序的“藍圖”,開發(fā)人員根據(jù)這個藍圖寫出實際的程序代碼。因此,詳細設(shè)計的結(jié)果基本決定了最終程序代碼的質(zhì)量。除了應(yīng)該保證程序的可靠性之外,也應(yīng)保證編寫的程序可讀性好,易于理解、測試、修改和維護,這一點是詳細設(shè)計的最重要的目標(biāo)與任務(wù)。 此外,界面設(shè)計也是本階段完成的主要工作。 界面提供了一個人機對話的有效窗口,一個良好的界面不僅能夠使 用戶方便快捷的應(yīng)用這個系統(tǒng),而且還可以通過界面形象的了解系統(tǒng)所具有的功能。因此,界面設(shè)計是系統(tǒng)設(shè)計過程中的一個重要的環(huán)節(jié)。 4.1 框架分析 接下來我們所要做的就是對整個系統(tǒng)進行邏輯分層,已便于系統(tǒng)的開發(fā) 、 維護以及后續(xù)新的功能的擴充。 軟件的邏輯分層指的是在單個的軟件模塊中完成相對獨立的特定的功能。軟件的層必須符合以下特征: 每個層由一組相關(guān)的類或組件構(gòu)成,共同完成特定的功能。 層與層之間存在自上而下的依賴關(guān)系,即上層組件會訪問下層組件的API,而下層組件不應(yīng)該依賴上層組件。 每個層對上層公開 API,但具體的實 現(xiàn)細節(jié)對外透明。當(dāng)某一層的實現(xiàn)發(fā)生變化,只要它的 API不變,不會影響其他層的實現(xiàn)。 軟件分層的優(yōu)點,主要表現(xiàn)在以下幾個方面: 提高軟件的伸縮性。伸縮性指應(yīng)用程序是否支持更多的用戶。 提高了軟件的可維護性??删S護性指的時當(dāng)發(fā)生需求變化時,只需修改軟件的某一部分,不會影響其他部分的代碼。層數(shù)越多,可維護性也會不斷提高,因為修改軟件的某一層的實現(xiàn),不會影響其他的層。 提高軟件的可擴展性??蓴U展性指的是在現(xiàn)有系統(tǒng)中增加新功能的難易程度。層數(shù)越少,增加新功能就越容易破壞現(xiàn)有的程序結(jié)構(gòu)。層數(shù)越多,大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 13 就可以在每個層中提供擴 展點,不會打破應(yīng)用的整體框架。 提高軟件的可重用性??芍赜眯灾傅氖菓?yīng)用程序代碼沒有冗余,同一個應(yīng)用程序能滿足多種需求。 提高軟件的可管理性??晒芾硇灾傅氖枪芾硐到y(tǒng)的難易程度。將應(yīng)用程序分為多層后,可將工作分給不同的開發(fā)小組,從而便于管理。 我們采用流行的 MVC設(shè)計模式,整合 Struts、 Spring、 Hibernate框架,把整個系統(tǒng)分為四層: 表 示 層 ( Presentation Layer)、 業(yè)務(wù)層( Business Layer) 、 持久層 ( Persistence Layer ) 、 域模 塊 層( Domain Model Layer ) ,并用 Struts實現(xiàn) 表現(xiàn)層 , 用 Spring實現(xiàn)業(yè)務(wù)層 , 用 Hibernate實現(xiàn)數(shù)據(jù)持久層。 表 示 層 :提供與用戶交互的界面,主要負責(zé)接受用戶請求并做出響應(yīng)。它接受用戶的輸入,將數(shù)據(jù)傳遞給業(yè)務(wù)層,并將業(yè)務(wù)層返回的處理結(jié)果以 DHTML的形式呈現(xiàn)給用戶。這一層的最佳實現(xiàn)模式就是 MVC模式,所以借助成熟的采用 MVC模式的 Struts來實現(xiàn)該層。 Struts主要在這一層負責(zé)為用戶管理請求和響應(yīng);提供 ActionFrom來封裝與用戶互動的數(shù)據(jù)元素;提供 控制器( controller)代理調(diào)用 業(yè)務(wù)邏輯 ;處理從其他層拋出的 Struts Action異常; 業(yè)務(wù)層 :具體的業(yè)務(wù)邏輯通常導(dǎo)致代碼的高度耦合,因此我們將業(yè)務(wù)邏輯分為單獨的一層,其目的也是希望通過該層,來降低它與系統(tǒng)其他部分的耦合度。該層借助 Spring可以達到更好的效果。通過 Spring的 IOC模式來裝配業(yè)務(wù)組件,如 DAO對象,使系統(tǒng)更具擴展性。通過 Spring AOP(面向方面)思想,來集中處理具體業(yè)務(wù),如事務(wù)管理,使代碼更為簡潔,增加復(fù)用,提高開發(fā)效率。所以 Spring主要在這一層負責(zé) 處理應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)驗證;管理事務(wù);管理業(yè)務(wù) 層對象之間的依賴;從 表 示 層中提供一個上下文( context)給業(yè)務(wù)層獲得業(yè)務(wù)服務(wù)( business services ) ; 管理從業(yè)務(wù)邏輯到持久層的實現(xiàn) 。 持久層 :在傳統(tǒng)的系統(tǒng)開發(fā)中該層占據(jù)大部分的開發(fā)時間,且隨著需求的變更功能的修改,逐漸變得難以控制,特別是表結(jié)構(gòu)的變化可能導(dǎo)致整個系統(tǒng)大動干戈。 Hibernate框架為 java提供了對象關(guān)系持久化( object-to-relational persistence)機制和查詢服務(wù) 。借助 Hibernate,利用大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 14 其持久化機制和 CRUD封裝來減少代碼開發(fā)量和其他層 次的耦合度。 域模 塊 層 :該層應(yīng)該說是 ORM思想的產(chǎn)物, ORM用對象關(guān)聯(lián)數(shù)據(jù)表,允許數(shù)據(jù)表中數(shù)據(jù)放入對象,也允許對象中數(shù)據(jù)更新到數(shù)據(jù)表,我們將這些對象的集合歸為一個專門的層次即 Domain Layer。域?qū)ο蟪袚?dān)各層之間數(shù)據(jù)通信的載體。實際上域?qū)ο笠彩且粋€完完全全的業(yè)務(wù)對象,如Board對象, Friend對象。通過對業(yè)務(wù)的對象化,這有利于業(yè)務(wù)邏輯的重用。 將系統(tǒng)進行如上的分層,從理論上可以讓其承擔(dān)各自職責(zé),表示層提供友好的用戶交互、業(yè)務(wù)層處理具體問題領(lǐng)域邏輯、持久層完成與數(shù)據(jù)庫讀取存儲、域模型承擔(dān)數(shù)據(jù)傳輸?shù)妮d 體。將一個復(fù)雜的應(yīng)用領(lǐng)域細分成諸多最小單元,然后進行串聯(lián)、組合。使得一個應(yīng)用領(lǐng)域的實現(xiàn)過程中,最小單元達到最大復(fù)用,這也是我們將 ICPS系統(tǒng)進行上述分層的原因之一。 分層后的設(shè)計圖如圖 5-1所示。 圖 5-1 系統(tǒng)架構(gòu)層次圖 4.2 功能模塊簡介 4.2.1 系統(tǒng) 功能劃分: 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 15 根據(jù)系統(tǒng)所實現(xiàn)的功能,可作出如下圖所示的結(jié)構(gòu)劃分: 根據(jù)服務(wù)分類顯示服務(wù)類型 精品鈴聲服務(wù) 圖片下載服務(wù) 短信服務(wù) 首頁 手機主題服務(wù) 手機游戲服務(wù) 顯示其他服務(wù)的信息 根據(jù)點擊量和更新時間顯示服務(wù)列表 顯示具體鈴聲分類列表 顯示鈴聲列表 顯示總體鈴聲數(shù)數(shù)據(jù)和排行 顯示所有手機主題數(shù)據(jù) 顯示手機主題 顯示總手機主題數(shù)據(jù)和排行 顯示具體圖片分類列表和數(shù)據(jù) 顯示圖片下載 顯示總圖片下載數(shù)據(jù)和排行 顯示具體游戲分類列表和數(shù)據(jù) 顯示手機游戲 顯示總手機游戲數(shù)據(jù)和排行 顯示具體短信分類列表和數(shù)據(jù) 顯示短信服務(wù) 顯示總短信服務(wù)數(shù)據(jù)和排行 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 16 4.2.2 系統(tǒng) 邏輯流程圖 : 首頁 服務(wù)總頁面(分類,排行,更新時間)信息列表 【頁面邏輯 流程圖 】 選擇一個服務(wù)類型 選擇一個下載內(nèi)容 下載頁面 下載完成 按說明進行下載 搜索內(nèi)容 搜索頁面 選擇一個下載內(nèi)容 分類內(nèi)容 分類信息頁面 選擇一個下載內(nèi)容 頁面需要的信息 服務(wù) 層( Service 類) - 由 Spring 依賴注入實體類 DAO 層 (Hibernate 查詢 ) 查詢數(shù)據(jù)庫,返回數(shù)據(jù) Action 類( Struts2)提供 根據(jù) ID 或者 其他需求查詢數(shù)據(jù) 結(jié)束 結(jié)束 【數(shù)據(jù)加載邏輯 流程圖 】 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 17 3.3 根據(jù)搜索信息 加載數(shù)據(jù) 2.2 排行榜信息 2.3 搜索信息 3.4 根據(jù)具體服務(wù)的 ID查詢數(shù)據(jù)庫獲取數(shù)據(jù) 2.4 顯示具體信息 1 選擇服務(wù) 用戶 D1 數(shù)據(jù)庫信息 2.1 分類信息 3.2 分類排行榜數(shù)據(jù) 3.1 搜索分類信息數(shù)據(jù) 4.2.3 系統(tǒng) 數(shù)據(jù)流圖 : 通過以上數(shù)據(jù)流圖的描述,很清晰的看出整個數(shù)據(jù)的流向。用戶登錄 主頁面 界面后 ,選擇相應(yīng)的服務(wù), 分別處理其相應(yīng)的加載工作。 然 后把數(shù)據(jù)通過服務(wù)層反傳遞到前臺頁面 JSP進行顯示。 4.3 數(shù)據(jù)模型設(shè)計 和數(shù)據(jù)庫設(shè)計 數(shù)據(jù)庫 設(shè)計 是最重要的,如果數(shù)據(jù)庫的設(shè)計不是很清晰,那么在服務(wù)層使用的時候常常會造成數(shù)據(jù)冗余。 系統(tǒng)需要大量的數(shù)據(jù)來支持的 ,建立合適的數(shù)據(jù)庫來存儲數(shù)據(jù)是非常重要的,那么首先就要設(shè)計合理、穩(wěn)定的數(shù)據(jù)模型 。根據(jù)多次需求分析 ,對需求已經(jīng)十分 明確,經(jīng)過詳細的需求分析,了解到各個表應(yīng)有的關(guān)系, 將 系統(tǒng) 的數(shù)據(jù)模型設(shè)計完成。 完成了整合 Struts、 Hibernate 和 Spring 框架的設(shè)計,把應(yīng)用系統(tǒng)分為了四層:表示層、業(yè)務(wù)層、持久層、 域模塊層。本章主要探討如何引入 Struts、 Hibernate和 Spring 框架技術(shù)分別實現(xiàn)表示層、業(yè)務(wù)層、持久層,并最終完成 共享 系統(tǒng)的大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 18 實現(xiàn)。 4.3.1 數(shù)據(jù)庫采用 Hibernate 進行架構(gòu) class Entity: private String id; private String title; private String content; private int clickTimes; private Date time; private Date updateTime; private User user; private ThemeType themeType; private String action; class Game extends Entity: private Image image; private String url; private Set comments; 游戲( Game)表 存儲游戲的屬性和狀態(tài) 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 文本 是 Title 文本 否 Content 長文本 否 clickTimes 整型 否 time 文本 否 updateTime 整型 否 action 文本 否 User_id 整型 (外鍵 ) 否 themeType_id 文本 否 url 整型 否 image 整型 否 class Image extends Entity: private String url; private Set comments; 圖像( Image)表 存儲圖像的屬性和狀態(tài) 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 文本 是 Title 文本 否 Content 長文本 否 clickTimes 整型 否 time 文本 否 updateTime 整型 否 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 19 action 文本 否 User_id 整型 (外鍵 ) 否 themeType_id 文本 否 url 整型 否 class Music extends Entity: private String url; private Set comments; 鈴聲( Music)表 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 文本 是 Title 文本 否 Content 長文本 否 clickTimes 整型 否 time 文本 否 updateTime 整型 否 action 文本 否 User_id 整型 (外鍵 ) 否 themeType_id 文本 否 url 整型 否 class SMS extends Entity: private Set comments; 短信( SMS)表 存儲短信的屬性和狀態(tài) 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 文本 是 Title 文本 否 Content 長文本 否 clickTimes 整型 否 time 文本 否 updateTime 整型 否 action 文本 否 User_id 整型 (外鍵 ) 否 themeType_id 文本 否 Abstract class Comment: private int id; private String title; 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 20 private String content; private Date time; private User user; private String action; class ThemeComment: class GameComment: class MusicComment: class SMSComment: 評論( Comment)表 存儲評論的屬性和狀態(tài) 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 文本 是 Type 文本 否 Title 文本 否 Content 長文本 否 Time 時間 否 Action 整型 否 Sms_id 文本 否 User_id 整型 (外鍵 ) 否 Image_id 文本 否 Music_id 文本 Theme_id 文 本 Game_id 文本 用戶( User)類: class User: private int id; private String name; private String password; private String petName; private Permission permission; private int cellPhone; private UserDetailedInformation detial; private Set groups; private Set comments; private Set entities; private Set createGroups; class UserDetailedInformation: private int id; private Image image; private String sex; 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 21 private Date birthday; private String interest; private Date registerTime; private Date lastLoginTime; 用戶 (User)表 存儲用戶的屬性和狀態(tài) 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 整型 是 name 文本 否 password 文本 否 Permission_id 整型 (外鍵 ) 否 petName 文本 否 cellPhone 整型 否 Detail_id 整型 否 用戶詳細信息( UserDetailedInformation)表: 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 整型 是 image 整型 否 Sex 文本 否 Birthday 日期 否 Interest 文本 否 registerTime 日期 否 lastLoginTime 日期 否 組( Group)類: Class Group: private int id; private String name; private String description; private String notice; private Image image; private Date time; private User user; private Set members; 組( Group)信息 存儲組別的屬性和狀態(tài) 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 整型 是 name 文本 否 description 文本 否 notice 文本 否 Image 整型 否 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 22 Time 日期 否 User 整型 否 Class Type: private int id; private String name; private Set themeTypes; 類別總分類( Type)信息 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 整型 是 name 文本 否 Class ThemeType: private int id; private String name; private Type type; 具體類別分類( ThemeType)信息 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 整型 是 Name 文本 否 Type_id 整型 否 Class Permission: private int id; private String name; 權(quán)限( Permission)信息 字段名稱 數(shù)據(jù)類型 是否為主鍵 Id 整型 是 Name 文本 否 4.3.2 數(shù)據(jù)庫類圖 類型 :含有所有的定義類型 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 23 實體 :具體的實體分類 -游戲、主題、短信、圖片、音樂。 評論 : 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 24 用戶: 4.3.3 持久層的實現(xiàn) 我們用 Hibernate框架實現(xiàn)應(yīng)用的持久層,封裝訪問數(shù)據(jù)庫的實現(xiàn)細節(jié),并向上層提供面向?qū)ο蟮臄?shù)據(jù)訪問 API。在接下來的三個小節(jié),主要分析了如何創(chuàng)建 Hibernate框架為我們的應(yīng)用服務(wù)。分為如下三個 步驟: 創(chuàng)建 O/R映射文件 創(chuàng)建 Hibernate配置文件 通過 Hibrenate API實現(xiàn)具體的 DAO數(shù)據(jù)訪類 4.3.4 O/R映射 Hibernate采用 XML格式的文件來指定對象和關(guān)系數(shù)據(jù)之間的映射。在應(yīng)用運行時, Hibernate將根據(jù)這個映射文件來生成各種 SQL語句,實現(xiàn)數(shù)據(jù)的訪問。 表與表之間的關(guān)聯(lián)關(guān)系 通過 XML進行配置,然后經(jīng)過 HibernateAPI實現(xiàn)。 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 25 4.3.5 DAO數(shù)據(jù)訪問接口 本系統(tǒng)涉及的業(yè)務(wù)對象有 多 個,每一個都映射到一張數(shù)據(jù)庫表,為了完成業(yè)務(wù)對象的持久 化,執(zhí)行相應(yīng)的增、刪、改、查操作,所以必須實現(xiàn)每一個對象的DAO類。基于以下幾點考慮,我們創(chuàng)建了每一個對象 DAO類的接口類 DAO: 為了以后功能擴展 降低系統(tǒng)實現(xiàn)之間的相互依賴關(guān)系 業(yè)務(wù)層用 Spring框架的設(shè)值注入方式綁定 business service object和 DAO Object, Business Object中的 Setter方法接受的是接口,這樣便于很松散的定義對象實現(xiàn),然后注入。 考慮到每一個 對象 DAO類所需完成功能的相似性 ,所以可以定義一個接口超類 , 用以封裝通用的方法定義 。 public interface ImageDAO public Image getImage(String id); public List getAllImages(); public List getAllImages(int page, int pageSize); public void deleteImage(String imageId); 4.3.6 DAO數(shù)據(jù)訪問實現(xiàn) 為了實現(xiàn)代碼的最大復(fù)用和便于以后功能的變更,業(yè)務(wù)對象 DAO都繼承自 接口中的 DAO。 Transactional可以獲得 CurrentSession。 CurrentSession能為我們管理 Session的創(chuàng)建、事務(wù)的啟動、提交與回滾。 getXXX()方法提供給調(diào)用者一個 Query對象,它需要調(diào)用者傳入一個 SQL語句的字符串作為參數(shù)。這個方法調(diào)用的 getCurrentSession ()方法獲取 Session。 向數(shù)據(jù)庫中添加記錄是最常見的操作之一。 AddXXX()實現(xiàn)了向數(shù)據(jù)庫中添加一條對應(yīng)于一個業(yè)務(wù)對象實例的記錄,它調(diào)用 HibernateTemplate的 save()方法實現(xiàn)。 根 據(jù)主鍵查詢唯一數(shù)據(jù)對象,用 getXXXById()方法實現(xiàn)。這個方法有兩個參數(shù):業(yè)務(wù)對象 Class和 id。根據(jù)需要, id可以是 Integer型對象、 Long型對象或String。 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 26 updateXXX()方法用于把業(yè)務(wù)對象的更新持久化到數(shù)據(jù)庫對應(yīng)的表中。 deleteXXX()方法從數(shù)據(jù)庫刪除一條對應(yīng)于一個業(yè)務(wù)對象的記錄 FindXXXByName(String name)方法根據(jù)查詢語句查詢數(shù)據(jù)庫并返回查詢結(jié)果所包含的業(yè)務(wù)對象集合 業(yè)務(wù)對象 DAO封裝了 Hibernate的實現(xiàn)細節(jié),提供訪問接口,供業(yè)務(wù) 層調(diào)用。 從上面的分析可以看出,用 Hibernate 實現(xiàn)持久層,使操作變得非常簡潔,我們所面對和操作的是都是具體得業(yè)務(wù)對象,而讓 Hibernate 根據(jù)映射文件去完成和數(shù)據(jù)庫表打交道得那部分工作。這也是使用 Hibernate 實現(xiàn)持久層得優(yōu)勢所在。 4.4 業(yè)務(wù)層的實現(xiàn) 業(yè)務(wù)層所要做的就是處理來自表示 層的請求、執(zhí)行應(yīng)用邏輯、 對 持久層的調(diào)用、處理事務(wù)、處理異常。 本系統(tǒng)涉及到的業(yè)務(wù)邏輯類是由系統(tǒng)的業(yè)務(wù)對象決定的。 Spring框架負責(zé)把業(yè)務(wù)處理邏輯與所用到的業(yè)務(wù)處理對象和 DAO聯(lián)系起來以完成相應(yīng)的業(yè)務(wù)處理。 4.4.1 業(yè)務(wù)邏輯處理類的實現(xiàn) 依據(jù)本系統(tǒng)涉及的業(yè)務(wù)對象,相應(yīng)的業(yè)務(wù)邏輯接口為: GameService接口 ImageService接口 MusicService接口 GameService接口 SMSService接口 ThemeService接口 UserService接口 boards); 4.4.2 Spring框架的配置 Spring框架依據(jù)配置文件將對象和服務(wù)以注入的方式聯(lián)系起來。 Spring的配置文件都是一些關(guān)于 Bean的定義,包括數(shù)據(jù)源的配置, SessionFactory的配置以及 Service Beans的配置。主要包括如下九個方面的配置: 1) 獲取數(shù)據(jù)源的配置文件,用以配置數(shù)據(jù)源。 2) 配置數(shù)據(jù)源 Bean,以供 SessionFactory Bean引用。 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 27 主要是上一步中從 perties獲取的值設(shè)置 driverClassName、 url、userName、 password、 dialect等屬性的值。 3) 配置 SessionFactory Bean,以供配置事務(wù)管理 bean、 hibernateInterceptor bean、 Dao Beans引用。 主要涉及到一些映射文件的定義,比如 Board.hbm.xml, Boards.hbm.xml等,用來描述從關(guān)系數(shù)據(jù)到對象的映射。 4) 配置事務(wù)管理 bean,用來管理數(shù)據(jù)庫事務(wù)。 Spring為我們提供了 HibernateTransactionManager事務(wù)管理器,但必須為它提供 sessionFactory取值,即第 3步中的 SessionFactory Bean。HibernateTransactionManager將會把事務(wù)處理的具體工作委托給 Hibernate中的 net.sf.hibernate.Transaction對象。 5) 配置 hibernateInterceptor。 定義 hibernateInterceptor的作用是攔截對所有 Dao Beans的方法對調(diào),在調(diào)用前綁定一個新的 Hibernate Session實例到當(dāng)前線程,并在調(diào)用后關(guān)閉此Session實例。像 4)中所述的一樣,也要為它提供 sessionFactory取值。 6) 配置 Dao Beans,以供 Dao的 AOP代理引用。 主要是一些具體 Dao實現(xiàn)類的定義,以供業(yè)務(wù)層完成對數(shù)據(jù)庫的相應(yīng)操作。 7) 配置 Dao的 AOP代理,以供 Service Beans。 8) 配置 Service Beans,以供 Service Beans的事務(wù)代理引用。 和上面 6)中所述類似,主要是定義一些具體了業(yè)務(wù)處理 Bean,以完成相應(yīng)的業(yè)務(wù)處理。 9) 配置 Service Beans的事務(wù)代理,以供表示層調(diào)用。 在上述所分析的配置中,完成了對數(shù)據(jù)源、 SessionFactory、HibernateTransactionManager、 HibernateInterceptor、 Dao Beans及代理、Service Beans及事務(wù)代理等的配置。通過 Spring AOP實現(xiàn)了聲明式事務(wù)管理。借助 Spring IoC實現(xiàn)了以配 置的方式創(chuàng)建注入對象。 4.5 表示層的實現(xiàn) 大慶石油學(xué)院本科生畢業(yè)設(shè)計(論文) 28 借助 Spring IoC和 Hibernate結(jié)合,實現(xiàn)了業(yè)務(wù)層與持久層的整合,把 Business Service Object和 DAO組裝了起來,并把這些對象配到一個事務(wù)管理器( transaction manager)里。剩下來的工作就是用戶接口層功能的實現(xiàn),即表示層的實現(xiàn)。我們把表示層再繼續(xù)細分為三層: View層, Model層, Controller層。 View層:由 JSP組成,提供與用戶交互的界面即動態(tài)頁面。負責(zé)接受用戶的輸入,借助 Struts的標(biāo)簽庫,把 用戶輸入的數(shù)據(jù)存入 ActionForm Bean中,供Struts Action處理,并將返回處理結(jié)果的顯示給用戶。 Model層:由 Struts Action和 ActionForm組成,負責(zé)處理從 View層傳遞過來的數(shù)據(jù)并調(diào)用相應(yīng)業(yè)務(wù)處理邏輯進行數(shù)據(jù)處理,將處理結(jié)果返回給 View層 Controller層:由 ActionServlet組成,負責(zé)接受用戶請求并轉(zhuǎn)發(fā)到相應(yīng)的 Action Bean處理,再根據(jù)處理的結(jié)果將不同的顯示請求重定向到響應(yīng)的 JSP頁面中進行顯示。 4.6 View層的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46722-2025航空航天用MJ螺紋六角自鎖螺母尺寸
- 2025年中職(環(huán)境化學(xué))污染物降解實驗綜合測試題及答案
- 數(shù)學(xué)好玩《嘗試與猜測》(教學(xué)課件)-五年級 數(shù)學(xué)上冊 北師大版
- 工程用工安全培訓(xùn)課件
- 工程檔案培訓(xùn)課件
- 工程施工安全培訓(xùn)教育
- 制漿車間安全培訓(xùn)課件
- 工程公司安全培訓(xùn)報道稿課件
- 手術(shù)AI在胸外科手術(shù)中的精準切割
- 房顫合并肥胖患者的術(shù)前減重策略
- 歡樂谷安全生產(chǎn)管理制度
- 消防高位水箱巡查方案(3篇)
- 消渴的中醫(yī)護理常規(guī)課件
- 應(yīng)急演練流程設(shè)計
- 新能源汽車充電站建設(shè)項目匯報
- 低空經(jīng)濟培訓(xùn)項目投資估算
- 露天礦機電設(shè)備及零部件維修工程方案投標(biāo)文件(技術(shù)方案)
- 動態(tài)監(jiān)控處理臺賬
- DB32-T 5081-2025 建筑防水工程技術(shù)規(guī)程
- 代駕租車合同樣本
- 頜骨骨折口腔頜面外科學(xué)課件
評論
0/150
提交評論