




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
Java高級框架應用開發(fā)案例教程(一)
Struts-Spring-Hibernate概述
主要內(nèi)容1.1框架概述1.2Struts、Spring和Hibernate概述1.3開發(fā)工具與配置1.1框架概述在介紹軟件框架(Framework)之前,我們首先要明確什么是框架和為什么要使用框架。這要從企業(yè)面臨的挑戰(zhàn)談起。如圖1-1所示:1.1框架概述可以看到,隨著工程的規(guī)模和復雜性的提高,企業(yè)面臨前所未有的各個方面的挑戰(zhàn)。根據(jù)優(yōu)先級排序,主要包括高可靠性〔HighAvailability〕,低本錢〔CostEffective〕,可擴展性〔Scalability〕,投放市場快速性〔TimetoMarket〕,平安性〔Secure〕,性能〔GoodPerformance〕,可集成性〔Abilitytointegrate〕,以及多平臺支持〔Multi-channel〕等。那么,我們?nèi)绾蚊鎸Σ⑶医鉀Q這些挑戰(zhàn)呢?這需要采用通用的、靈活的、開放的、可擴展的軟件框架,由框架來幫助我們解決這些挑戰(zhàn),之后再在框架根底之上開發(fā)具體的應用系統(tǒng)。如圖1-2所示:這種基于框架的軟件開發(fā)方式和傳統(tǒng)的汽車生產(chǎn)方式是很類似的,如圖1-3所示:1.1框架概述那么到底什么是軟件框架呢?框架(Framework)的定義如下:是應用系統(tǒng)的骨架,將軟件開發(fā)中反復出現(xiàn)的任務標準化,以可重用的形式提供使用大多提供了可執(zhí)行的具體程序代碼,支持迅速地開發(fā)出可執(zhí)行的應用;但也可以是抽象的設計框架,幫助開發(fā)出健壯的設計模型好的抽象、設計成功的框架,能夠大大縮短應用系統(tǒng)開發(fā)的周期在預制框架上參加定制的構(gòu)件,可以大量減少編碼量,并容易測試分別用于垂直和水平應用1.1框架概述框架具有以下特點:框架具有很強〔大粒度〕的可重用性,遠遠超過了單個類;它是一個功能連貫的類集合,通過相互協(xié)作為應用系統(tǒng)提供效勞和預制行為框架中的不變局部,定義了接口、對象的交互和其他不變量框架中的變化局部〔應用中的個性〕一個好的框架定義了開發(fā)和集成組件的標準。為了利用、定制或擴展框架效勞,通常需要框架的使用者從已有框架類繼承相應的子類;以及通過執(zhí)行子類的重載方法,用戶定義的類將會從預定義的框架類獲得需要的消息。這會給我們帶來很多好處,包括代碼重用性和一致性,對變化的適應性,特別是它能夠讓開發(fā)人員專注于業(yè)務邏輯,從而大大減少了開發(fā)時間。如圖1-4所示對有沒有使用框架對工程開發(fā)所需工作量〔以人*月來衡量〕的影響進行了比照。1.1框架概述從圖中我們不難看出,對于沒有使用框架的工程而言,開發(fā)所需工作量〔以Mandays,即人*月來衡量〕會隨著工程復雜性的提高〔以Businessfunction,即業(yè)務功能來衡量〕以幾何級數(shù)遞增,而對于使用框架的工程而言,開發(fā)所需工作量會隨著工程復雜性的提高以代數(shù)級數(shù)遞增。舉個例子,假定開發(fā)團隊人數(shù)一樣,一個沒有使用框架的工程所需的周期為6-9個月的話,那么同樣的工程如果使用框架那么只需要3-5個月。1.1框架概述在軟件架構(gòu)設計中,我們往往建立軟件系統(tǒng)的高層結(jié)構(gòu),常常用到分層架構(gòu)模式。分層模式是一種將系統(tǒng)的行為或功能以層為首要的組織單位來進行分配〔劃分〕的結(jié)構(gòu)模式:—通常在邏輯上進行垂直的層次Layer劃分—在物理上創(chuàng)造那么進行水平的層級Tier劃分分層要求:層內(nèi)的元素只信賴于當前層和之下的相鄰層中的其它元素(注意這并非絕對的要求)大局部的Web應用在職責上至少能被分成4層:表示層〔PresentationLayer〕、持久層〔PersistenceLayer〕、業(yè)務層〔BusinessLayser〕和域模塊層〔domainmodelLayer〕。每個層在功能上都應該是十清楚確的,而不應該與其他層混合。每個層要相互獨立,通過一個通信接口而相互聯(lián)系。下面將分別詳細地介紹這四層,討論一下這些層應該提供什么,不應該提供什么。1.2Struts、Spring和Hibernate概述這里討論一個使用三種開源框架的策略:表示層用Struts;業(yè)務層我們用Spring;而持久層那么用Hibernate。如圖1-5所示。1.2Struts、Spring和Hibernate概述1.2.1表示層一般來講,一個典型的Web應用的前端應該是表示層。這里可以使用Struts框架。下面是Struts所負責的:管理用戶的請求,做出相應的響應提供一個流程控制器,委派調(diào)用業(yè)務邏輯和其他上層處理處理異常為顯示提供一個數(shù)據(jù)模型用戶界面的驗證以下內(nèi)容,不該在Struts表示層的編碼中經(jīng)常出現(xiàn),與表示層無關的。與數(shù)據(jù)庫直接通信與應用程序相關聯(lián)的業(yè)務邏輯及校驗事務處理在表示層引入這些代碼,那么會帶來高耦合和難以維護的后果。1.2Struts、Spring和Hibernate概述1.2.2持久層典型的Web應用的后端是持久層。開發(fā)者總是低估構(gòu)建他們自己的持久層框架的挑戰(zhàn)性。系統(tǒng)內(nèi)部的持久層不但需要大量調(diào)試時間,而且還經(jīng)常因為缺少功能使之變得難以控制。這是持久層的通病。幸運地是,有幾個對象/關系映射〔Object/RelationMapping,ORM〕開源框架很好地解決了這類問題,尤其是Hibernate。Hibernate為Java提供了持久化機制和查詢效勞,它還給已經(jīng)熟悉SQL和JDBCAPI的Java開發(fā)者創(chuàng)造了一個學習橋梁,使他們學習起來很方便。Hibernate的持久對象是基于POJO〔PlainOldJavaObject〕和Java集合〔collections〕的。此外,使用Hibernate并不阻礙你正在使用的IDE〔IntegratedDevelopmentEnviroment〕。1.2Struts、Spring和Hibernate概述下面是Hibernate所負責的:如何查詢對象的相關信息。Hibernate是通過一個面向?qū)ο蟮牟樵冋Z言〔HQL〕或者正那么表達的API來完成查詢的。HQL非常類似于SQL,只是把SQL里的table和columns用Object和它的fields代替。HQL語言容易理解且文檔也做得很好。HQL是一種面向?qū)ο蟛樵兊淖匀徽Z言,很容易就能學會它。如何存儲、更新、刪除數(shù)據(jù)庫記錄。如Hibernate這類的高級ORM框架支持大局部主流數(shù)據(jù)庫,并且支持父表/子表〔Parent/child〕關系、事務處理、繼承和多態(tài)。1.2Struts、Spring和Hibernate概述1.2.3業(yè)務層一個典型Web應用的中間局部是業(yè)務層或者效勞層。從編碼的視角來看,這層是最容易被無視的一層。我們往往在用戶界面層或持久層周圍看到這些業(yè)務處理的代碼,這其實是不正確的。因為它會造成程序代碼的高耦合,這樣一來,隨著時間推移,這些代碼將很難維護。幸好,針對這一問題有好幾種框架〔Framework〕存在。最受歡送的兩個框架是Spring和PicoContainer。這些也被稱為輕量級容器〔microcontainer〕,它們能讓你很好地把對象搭配起來。這兩個框架都著手于“依賴注射〞〔dependencyinjection〕〔還有我們知道的‘控制反轉(zhuǎn)’InversionofControl=IoC〕這樣的簡單概念。這里我們將關注于Spring的依賴注射和面向方面編程。另外,Spring把程序中所涉及到的包含業(yè)務邏輯和數(shù)據(jù)存取對象〔DataAccessObject〕的Objects——例如transactionmanagementhandler〔事務管理控制〕、ObjectFactoris〔對象工廠〕、serviceobjects〔效勞組件〕——都通過XML來配置聯(lián)系起來。1.2Struts、Spring和Hibernate概述后面我們會通過工程和實例來揭示一下Spring是怎樣運用這些概念的。下面是業(yè)務層所負責的:處理應用程序的業(yè)務邏輯和業(yè)務校驗管理事務提供與其他層相互作用的接口管理業(yè)務層級別的對象的依賴在表示層和持久層之間增加了一個靈活的機制,使得他們不直接聯(lián)系在一起通過揭示從表示層到業(yè)務層之間的上下文〔Context〕來得到業(yè)務邏輯〔businessservices〕管理程序的執(zhí)行〔從業(yè)務層到持久層〕1.2Struts、Spring和Hibernate概述1.2.4域模塊層既然我們致力于的是一個Web的應用,我們就需要一個對象集合,讓它在不同層之間移動。域模塊層由實際需求中的業(yè)務對象組成比方,訂單明細〔OrderLineItem〕、產(chǎn)品〔Product〕等等。開發(fā)者在這層不用管那些數(shù)據(jù)傳輸對象〔DataTransferObject〕,僅關注域?qū)ο蟆瞕omainobject〕即可。例如,Hibernate允許你將數(shù)據(jù)庫中的信息存入域?qū)ο蟆瞕omainobjects〕,這樣你可以在連接斷開的情況下把這些數(shù)據(jù)顯示到用戶界面層,而那些對象也可以返回給持久層,從而在數(shù)據(jù)庫里更新。而且,你不必把對象轉(zhuǎn)化成DTO〔這可能導致它在不同層之間的傳輸過程中喪失〕。這個模型使得Java開發(fā)者能很自然運用面向?qū)ο缶幊獭睴bject-OrientedProgramming〕,而不需要附加的編碼。本書圍繞上述架構(gòu),通過一個完整的工程AscentWeb醫(yī)藥商務系統(tǒng)來具體展開Struts-Spring-Hibernate這三局部的講解。1.2Struts、Spring和Hibernate概述1.3開發(fā)工具與配置開發(fā)工具與環(huán)境1.集成開發(fā)工具IDE:MyEclipse7.02001年11月IBM宣布捐出了價值4千萬美金的開發(fā)軟件給開放源碼的Eclipse工程,Eclipse是替代IBMVisualAgeforJava的下一代IDE開發(fā)環(huán)境?!沧ⅲ篍clipse是“蝕〞的意思,SUN微系統(tǒng)公司推出了Java,eclipseofthesun就是“日蝕〞,以此與SUN公司競爭?!矱clipse的官方網(wǎng)站是,你可以在Downloads欄目中下載其最新Release版本;當然你也可以下載它的官方中文語言包,這樣,不僅程序界面甚至幫助文檔都是簡體中文的了。根據(jù)Eclipse的體系結(jié)構(gòu),通過開發(fā)插件,它能擴展到任何功能和任何語言的開發(fā)。這也正是Eclipse的潛力所在。Myeclipse是Eclipse開發(fā)插件,7.0版本支持spring2.5,所以選擇MyEclipse7.0作為開發(fā)工具。1.3開發(fā)工具與配置3.數(shù)據(jù)庫:MySQL是一個多用戶、多線程的SQL數(shù)據(jù)庫,是一個客戶機/效勞器結(jié)構(gòu)的應用,它由一個效勞器守護程序mysqld和很多不同的客戶程序和庫組成。它是目前市場上運行最快的SQL〔StructuredQueryLanguage結(jié)構(gòu)化查詢語言〕數(shù)據(jù)庫之一,你可以從上下載,它提供了其它數(shù)據(jù)庫少有的編程工具,而且MySQL對于商業(yè)和個人用戶是免費的。這里我們使用相對穩(wěn)定的版本。MySQL的功能特點如下:可以同時處理幾乎不限數(shù)量的用戶;處理多達50,000,000以上的記錄;命令執(zhí)行速度快,也許是現(xiàn)今最快的;簡單有效的用戶特權(quán)系統(tǒng)。1.3開發(fā)工具與配置工具集成步驟1.Eclipse連Tomcat首先確定自己機器安裝了,并且在環(huán)境變量中配置了java_home變量。翻開Eclipse,在應用中我們要應用MyEclipse7.0,該版本直接和Eclipse集成在一起。連Tomcat進行下面步驟選擇Window->Preferences…進入下面界面如圖1-6所示:1.3開發(fā)工具與配置選擇MyEclipse->Servers->Tomcat->Tomcat6.x,如圖1-7所示:首先選中Enable,然后Tomcathomedirectory選擇根目錄,點擊Apply、OK即可。1.3開發(fā)工具與配置2.Eclipse連MySQL數(shù)據(jù)庫點擊Window->ShowView->Other…翻開如下對話框如圖1-8所示:1.3開發(fā)工具與配置選擇MyEclipseDatabase->DBBrowser點擊OK。如圖1-9所示:1.3開發(fā)工具與配置上面操作翻開了DBBrowser試圖,在該試圖空白區(qū)點擊右鍵,選擇New…進行新建連接〔如果有也可以右鍵Edit…〕,如圖1-10所示:1.3開發(fā)工具與配置點擊New…后出現(xiàn)以下圖配置連接頁面,如圖1-11所示:按照上面配置連接,其中Drivername:自己隨意取名,URL配置自己的url,后面acesys
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州工業(yè)園區(qū)服務外包職業(yè)學院《高級運籌學》2023-2024學年第一學期期末試卷
- 《交通工具集成燈具》課件
- 遵義職業(yè)技術學院《統(tǒng)計學基礎》2023-2024學年第一學期期末試卷
- 婁底職業(yè)技術學院《地質(zhì)災害評價與防治》2023-2024學年第二學期期末試卷
- 長白山職業(yè)技術學院《聚合物表征與測試實驗》2023-2024學年第二學期期末試卷
- 新鄉(xiāng)工程學院《建筑結(jié)構(gòu)新技術與應用》2023-2024學年第二學期期末試卷
- 石家莊人民醫(yī)學高等??茖W校《重唱與合唱(一)》2023-2024學年第二學期期末試卷
- 《小貓咪找伙伴》課件
- 2025至2031年中國拼接信封睡袋行業(yè)投資前景及策略咨詢研究報告
- 兒童房吊頂施工方案
- 告訴我地址 -從IPv4到IPv6的傳奇 課件 2024-2025學年清華大學版(2024)B版初中信息技術七年級上冊
- 電力公司電力設備運行維護管理手冊
- 紫藤花的秘密課件
- 心理健康教育(共35張課件)
- 教案-人工智能通識課-AIGC - 任務11 內(nèi)容生成之使用Kimi AI進行多文本閱讀
- 項目建筑智能化工程施工招標文件模板
- 心理治療(初級(師)212)相關專業(yè)知識衛(wèi)生專業(yè)技術資格考試試題及答案指導(2024年)
- 110kv線路施工方案
- 橋式起重機主梁強剛計算
- 大東鞋業(yè)合同協(xié)議書
- 犀牛首飾建模課程設計
評論
0/150
提交評論