版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、JavaEE開發(fā)框架什么是開發(fā)框架建筑業(yè)(框架決定建筑的布局和面積)=軟件工程(框架決定了軟件系統(tǒng)的功能)從軟件分析和設(shè)計的角度框架是一個可復(fù)用的軟件架構(gòu)解決方案規(guī)定了應(yīng)用的體系結(jié)構(gòu),闡明了軟件體系結(jié)構(gòu)中各層次間以及層次內(nèi)部各組件間的依賴關(guān)系、責(zé)任分配和控制流程表現(xiàn)為一組接口、抽象類以及其實例之間協(xié)作的方法。從軟件實現(xiàn)的角度軟件快速實現(xiàn)的基礎(chǔ)平臺包含一組可重用的組件,使得某一領(lǐng)域內(nèi)的軟件的基礎(chǔ)功能和通用流程的實現(xiàn)更加高效便捷使得開發(fā)人員可以專注于特定業(yè)務(wù)邏輯,提高軟件的開發(fā)效率??蚣芏季哂幸欢ǖ倪m用范圍,都是針對特定應(yīng)用領(lǐng)域軟件開發(fā)的。不存在適合任何領(lǐng)域的萬能框架!框架的特點框架是一個應(yīng)用程序
2、的半成品框架提供了可在應(yīng)用程序之間共享的可覆用的公共結(jié)構(gòu)。利用成熟的框架,開發(fā)者只需集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計框架一般是成熟,穩(wěn)健的,可處理系統(tǒng)很多細(xì)節(jié)問題,比如,事務(wù)處理,安全性,數(shù)據(jù)流控制等問題。多人使用,結(jié)構(gòu)好,擴(kuò)展性好,不斷升級,享受別人升級代碼帶來的好處。Dont Reinvent the Wheel!為什么需要框架企業(yè)應(yīng)用大規(guī)模敏捷開發(fā)的需求多頁面導(dǎo)航、類型轉(zhuǎn)換(輸入數(shù)據(jù)和Java對象自動轉(zhuǎn)換)、信息校驗、國際化開發(fā)中的共性問題,無統(tǒng)一標(biāo)準(zhǔn),無一套完整的解決方案基于框架的軟件開發(fā)優(yōu)點有確保開發(fā)質(zhì)量。合理的規(guī)劃設(shè)計,針對共性問題提供了基礎(chǔ)實現(xiàn),歷經(jīng)大量軟件工程項目的實踐,從根本上
3、保證了軟件的穩(wěn)定性和擴(kuò)展性。提高開發(fā)效率??蚣艿淖畲髢?yōu)點即重用。重用包括兩個層次:一個是應(yīng)用分析設(shè)計上的重用,框架已設(shè)計架構(gòu)好了應(yīng)用的整體架構(gòu)及各層之間的接口關(guān)系,開發(fā)人員可以專注于業(yè)務(wù)領(lǐng)域的設(shè)計分析。二是代碼上的重用,框架中提供了一些通用功能組件的實現(xiàn),將在很大程度上減少開發(fā)人員工作量。通過框架,實現(xiàn)了對應(yīng)用開發(fā)中底層API的封裝,降低了開發(fā)難度,大大提高了開發(fā)效率。框架標(biāo)準(zhǔn)和框架實現(xiàn)框架標(biāo)準(zhǔn) vs 框架實現(xiàn)廠商可提供具體框架實現(xiàn),只有遵循框架標(biāo)準(zhǔn),應(yīng)用可在任何Java EE服務(wù)器環(huán)境中運(yùn)行Java EE架構(gòu)方面的標(biāo)準(zhǔn)規(guī)范JSF(Web表現(xiàn)層框架標(biāo)準(zhǔn))JPA(數(shù)據(jù)持久化規(guī)范)業(yè)界主流的應(yīng)用框
4、架實現(xiàn)Struts2SpringHibernateSeamWebworkJava EE的精髓將開發(fā)過程的基礎(chǔ)功能、通用特性相關(guān)實現(xiàn)委托容器,并由實現(xiàn)容器的應(yīng)用服務(wù)器廠商完成框架規(guī)范中的組件在框架規(guī)范中的容器環(huán)境中運(yùn)行,容器在運(yùn)行時管理組件的各個方面容器由Java EE服務(wù)器廠商來提供實現(xiàn)組件開發(fā)人員因此可以專注業(yè)務(wù)邏輯,容器負(fù)責(zé)處理其他一切(安全、事務(wù)、持久化等)什么是JSFJSF是一個以組件為中心,基于MVC架構(gòu)的,Web應(yīng)用表現(xiàn)層的框架標(biāo)準(zhǔn)與Struts2等具體的框架實現(xiàn)不同,它不是一個具體的框架實現(xiàn),作為Java EE 標(biāo)準(zhǔn)的一部分,各廠商都可以提供自己的JSF實現(xiàn)Java EE SDK
5、中包含的是Sun的JSF實現(xiàn)還有Primefaces、OpenFaces、MyFaces等其他JSF實現(xiàn)許多論述中都把實現(xiàn)了JSF標(biāo)準(zhǔn)的框架統(tǒng)稱為JSF框架JSF是Web應(yīng)用表現(xiàn)層的框架標(biāo)準(zhǔn)JSF是一個基于組件的框架標(biāo)準(zhǔn)JSF是一個基于MVC架構(gòu)的框架JSF的優(yōu)點JSF是JavaEE規(guī)范中的一個部分只要遵循JSF標(biāo)準(zhǔn),就能在任何一種Java EE 服務(wù)器上運(yùn)行。開發(fā)人員基于JSF的應(yīng)用也將能夠確保運(yùn)行在更多的應(yīng)用服務(wù)器上。JSF吸收了流行框架的優(yōu)點JSF標(biāo)準(zhǔn)廣泛吸收了當(dāng)前流行的Web表現(xiàn)層框架如Struts2、Webwork、Seam等優(yōu)點,能夠更好地滿足開發(fā)人員的需求可與其他Java EE技
6、術(shù)無縫集成JSF已經(jīng)成為Java EE標(biāo)準(zhǔn)規(guī)范的一部分。當(dāng)前的JSF標(biāo)準(zhǔn)已經(jīng)與CDI、Bean Validation等技術(shù)規(guī)范實現(xiàn)緊密結(jié)合,從而發(fā)揮Java EE解決方案的優(yōu)勢。Servlet、JSP vs. JSF在傳統(tǒng)的Java EE應(yīng)用中,服務(wù)器端的處理由Servlet來完成Servlet組件技術(shù)僅從應(yīng)用組件角度出發(fā),規(guī)定組件的工作接口、工作方式JSP技術(shù)構(gòu)建動態(tài)Web頁面的組件技術(shù),底層實現(xiàn)技術(shù)是Servlet技術(shù)在JSF應(yīng)用中,當(dāng)接收到客戶端的JSF請求后,由JSF框架中的核心控制組件FaceServlet對請求進(jìn)行統(tǒng)一處理不同之處在于,JSF框架對請求處理過程定義了一整套標(biāo)準(zhǔn)化的處
7、理流程,它幫助開發(fā)人員完成了諸如輸入校驗、類型轉(zhuǎn)換和導(dǎo)航控制等功能,使得開發(fā)人員可以專注于業(yè)務(wù)邏輯的實現(xiàn)JSF框架技術(shù)從系統(tǒng)高度對Web應(yīng)用開發(fā)的共性問題給出了一種標(biāo)準(zhǔn)解決方案構(gòu)建Web應(yīng)用的框架技術(shù)什么是JPA企業(yè)級應(yīng)用主流開發(fā)方法面向?qū)ο蟮拈_發(fā)方法企業(yè)級應(yīng)用主流數(shù)據(jù)存儲方式關(guān)系數(shù)據(jù)庫兩種不同領(lǐng)域中的業(yè)務(wù)信息表現(xiàn)形式Java中的對象之間的聯(lián)系關(guān)聯(lián)、繼承數(shù)據(jù)庫中的關(guān)系數(shù)據(jù)的聯(lián)系表外鍵、連接表JDBC開發(fā)存在的問題代碼繁瑣Java對象和關(guān)系數(shù)據(jù)之間的轉(zhuǎn)換解決方案:ORM持久化框架實現(xiàn)Java對象與關(guān)系數(shù)據(jù)之間自動映射的持久化框架(Object/Relation Mapping)這些持久化框架包括
8、Hibernate、iBatis、EclipseLink、TopLink和Apache OJB等為了促進(jìn)Java EE 企業(yè)應(yīng)用開發(fā),進(jìn)一步規(guī)范ORM實現(xiàn),Java EE 5.0 規(guī)范中推出了JPA(Java Persistence API)。在Java EE 6.0規(guī)范中包含的JPA版本為2.0JPA內(nèi)涵JPA是一個ORM的標(biāo)準(zhǔn)規(guī)范,而不是一個具體的ORM框架Java EE的本質(zhì)就是一個標(biāo)準(zhǔn)規(guī)范的集合JPA定義了一種Java對象與關(guān)系數(shù)據(jù)之間的映射語言在更高層次上對數(shù)據(jù)庫的操作進(jìn)行了封裝提供了一個操作持久化對象的標(biāo)準(zhǔn)接口支持?jǐn)?shù)據(jù)持久化操作過程中的緩存、并發(fā)等高級既可運(yùn)行在Java SE環(huán)境中
9、,也可運(yùn)行在 Java EE中JPA應(yīng)用的組成部分(1)持久化單元在JPA運(yùn)行之前,開發(fā)人員需要告訴JPA關(guān)于數(shù)據(jù)庫連接的相關(guān)信息如數(shù)據(jù)源名稱等。關(guān)于數(shù)據(jù)庫的連接配置信息,都保存在一個稱為持久化單元的配置文件中。它其實是一個名為persistence.xml的文件(2)創(chuàng)建EntityEntity(3)操作EntityJPA框架提供了一個接口EntityManager來完成對Entity的操作,包括如何將Entity存儲到數(shù)據(jù)以及如何查詢Entity、如何更新Entity等。JPA中的Entity管理Entity的生命狀態(tài)及其轉(zhuǎn)換分層看業(yè)界的主流框架客戶端:Ajax Flex Extjs Jq
10、uery服務(wù)器端Web層:Struts2、JSF、SpringMVC數(shù)據(jù)持久化層:Hibernate、iBatis(MyBatis)整合:SpringMVC思想模型:數(shù)據(jù)模型(Model)用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對數(shù)據(jù)的處理方法。視圖:視圖(View)是用戶看到并與之交互的界面??刂破鳎嚎刂破鳎–ontroller)起到不同層面間的組織作用,用于控制應(yīng)用程序的流程。MVC設(shè)計思想視圖(View)代表用戶交互界面,對于Web應(yīng)用來說,可以是HTML,也可能是jsp、XML和Applet等。一個應(yīng)用可能有很多不同的視圖。MVC設(shè)計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以
11、及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。比如一個訂單的視圖只接受來自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請求傳遞給控制和模型。MVC設(shè)計思想模型(Model):是業(yè)務(wù)的處理以及業(yè)務(wù)規(guī)則的制定。模型接受視圖請求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計是MVC最主要的核心。MVC設(shè)計模式告訴我們,把應(yīng)用的模型按一定的規(guī)則抽取出來,抽取的層次很重要,抽象與具體不能隔得太遠(yuǎn),也不能太近。MVC并沒有提供模型的設(shè)計方法,而只是組織管理這些模型,以便于模型的重構(gòu)和提高重用性。業(yè)務(wù)模型還有一個很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要指實體對
12、象的數(shù)據(jù)保存(持續(xù)化)。比如將一張訂單保存到數(shù)據(jù)庫,從數(shù)據(jù)庫獲取訂單。我們可以將這個模型單獨(dú)列出,所有有關(guān)數(shù)據(jù)庫的操作只限制在該模型中。MVC設(shè)計思想控制(Controller)可以理解為從用戶接收請求, 將模型與視圖匹配在一起,共同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點擊一個連接,控制層接受請求后, 并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個模型可能對應(yīng)多個視圖,一個視圖可能對應(yīng)多個模型。Jsp
13、 model 1架構(gòu)Model 1的基礎(chǔ)是JSP文件,它由一些相互獨(dú)立的JSP文件和其他一些Java Class組成。這些JSP從HTTP Request中獲得所需要的數(shù)據(jù),處理業(yè)務(wù)邏輯,然后將結(jié)果通過Response返前端瀏覽器。Model 1的應(yīng)該說是唯一的好處是“簡單”,可以大大加快系統(tǒng)的開發(fā)進(jìn)度。它把表現(xiàn)層和業(yè)務(wù)邏輯層柔和在一起,不利于以后的維護(hù)工作以及開發(fā)角色的分配,所以這種模式只能適合于小的系統(tǒng)開發(fā)。Jsp model 2架構(gòu)Model 2采用面向?qū)ο蠹夹g(shù)實現(xiàn)MVC模式 從而擴(kuò)展JSP/Servlet的模式。 Model2是MVC在Web上的應(yīng)用。一個Model 2規(guī)范實現(xiàn)的Web
14、框架 Struts2的組成與工作原理Struts2是基于MVC模式的Web框架,Struts2框架按照MVC的思想主要有,控制器層,模型層,視圖組件。Struts2的組成與工作原理(1)模型組件:模型組件是實現(xiàn)業(yè)務(wù)邏輯的模塊,由JavaBean或者EJB構(gòu)成。(2)視圖組件:視圖組件主要有:HTML、JSP和Struts2標(biāo)簽,以及FreeMarker、Velocity等模板視圖技術(shù)。(3)控制器組件:控制器組件主要由一個StrutsPrepareAndExecuteFilter核心控制器和業(yè)務(wù)控制器Action組成。Struts2的處理流程圖 當(dāng)用戶請求到達(dá)時,該Filter會過濾用戶的請求
15、。當(dāng)請求轉(zhuǎn)入Struts2框架處理時會先經(jīng)過一系列的攔截器,然后再到Action。Struts2對用戶的每一次請求都會創(chuàng)建一個Action,Action是線程安全的。Hibernate?直接使用JDBC操作數(shù)據(jù)庫的步驟很繁瑣JDBC操作的是關(guān)系型數(shù)據(jù)庫我們用JAVA開發(fā)程序,則使用面向?qū)ο蟮乃枷際ibernate正是在這兩種不同的模型之間建立關(guān)聯(lián),Hibernate給我們提供了利用面向?qū)ο蟮乃枷雭聿僮麝P(guān)系型數(shù)據(jù)的接口Hibernate與ORMHibernate體系結(jié)構(gòu)Spring框架Spring框架是由世界著名的Java EE大師羅德約翰遜(Rod Johnson)發(fā)明的。Spring開源框架
16、簡介開源框架輕量級非入侵控制反轉(zhuǎn)(IoC)面向切面編程(AOP) 可以有效解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性。Spring使用基本的JavaBean(POJO)來完成事務(wù)。簡單、可測試和松耦合Spring是非侵入式的-Spring應(yīng)用中的對象不依賴于Spring的特定類。Spring框架組成部分Spring是一個開源框架,它的功能都是從實際開發(fā)中抽取出來的,完成了大量Java EE開發(fā)中的通用步驟。Spring框架的主要優(yōu)勢之一是其分層架構(gòu),整個框架由7個定義良好的模塊(或組件)組成,它們都統(tǒng)一構(gòu)建在核心容器之上,如圖所示。Spring框架的兩個核心特點控制反轉(zhuǎn)(IoC)面向切面編程(AOP) 控制反轉(zhuǎn)
17、(IoC) :Inversion of Control 依賴注入(DI) :Dependency Injection 當(dāng)某個角色(比如一個Java實例,調(diào)用者)需要另一個角色(另一個Java實例,被調(diào)用者)的協(xié)助時,在傳統(tǒng)的程序設(shè)計過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例。但在Spring里,創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,因此稱為控制反轉(zhuǎn);創(chuàng)建被調(diào)用者實例的工作通常由Spring容器來完成,然后注入調(diào)用者,因此也稱為依賴注入。IoC簡介什么是IoCIoC是Inversion of Control的縮寫,被稱為控制反轉(zhuǎn),也稱“依賴注入”。Spring的其他功能都構(gòu)建在IoC之上先通過實際
18、例子,了解IoC的基本概念I(lǐng)oC(控制反轉(zhuǎn))機(jī)制底層類的改變(變?yōu)镕loppyWriter)造成了高層類Business也必須改變(上段代碼中加黑部分為改動部分),這不是一個好的設(shè)計。造成這種弊端的顯著原因是,高層Business類依賴于底層類,如圖所示。IoC(控制反轉(zhuǎn))機(jī)制在這段代碼中,原先的依賴關(guān)系發(fā)生了變化,如圖所示,高層類Business不再依賴于底層(被調(diào)用)的類,而是依賴于接口。依賴注入舉例(1)設(shè)值注入。setter注入是指使用類的setXXX方法對屬性進(jìn)行賦值與之前一樣,先定義接口和底層類:public interface IWritervoid save();public
19、class UsbDiskWriter implements IWriterpublic void save()/把內(nèi)容保存在U盤中public class FloppyWriter implements IWriterpublic void save()/把內(nèi)容保存在Floppy盤中再編寫B(tài)usiness類,在其中增加定義一個setter方法,代碼如下:public class Businessprivate IWriter writer;/默認(rèn)的構(gòu)造器public Business()/設(shè)值注入所需的setter方法public void setWriter(IWriter writer)
20、this.writer = writer;public void save()writer.save();本例中,假設(shè)用戶要把內(nèi)容保存在U盤,就要在配置文件中寫入:若想改存到Floppy盤,只需修改配置文件:(2)構(gòu)造注入。構(gòu)造方法注入,即通過調(diào)用帶參的構(gòu)造方法注入所依賴的屬性。讓Spring在構(gòu)造Business類實例時就順便為其完成依賴關(guān)系的初始化,要做到這一點不難,只要對前面Business類的代碼做簡單修改,代碼如下:public class Businessprivate IWriter writer;/默認(rèn)的構(gòu)造器public Business()/構(gòu)造注入所需的帶參數(shù)的構(gòu)造器pu
21、blic Business(IWriter writer)this.writer = writer;public void save()writer.save();構(gòu)造注入的配置文件也需要做簡單的修改,改為使用元素指定構(gòu)造器的參數(shù),代碼如下:IoC的使用IoC意指將設(shè)計好的類交給容器控制,容器負(fù)責(zé)實例化對象,并將對象依賴的屬性注入,從而得到一個可用的對象bean都需要在applicationContext.xml中使用元素配置通過ApplicationContext接口中的getBean方法,可以獲得IoC容器中的bean對象需要使用IoC的對象并不是所有對象都需要使用IoC,常常使用IoC的
22、對象有如下幾種服務(wù)層對象數(shù)據(jù)層對象表示層對象工廠類對象JMS的Queue、Topic對象針對接口編程,通過Spring配置文件注入IoC簡介不必關(guān)心組件的創(chuàng)建不必管理組件的生命周期組件容易共享測試非常容易優(yōu)點 將組件交給Spring容器管理,以“組裝積木”的方式來裝配組件。IoC簡介 問題:應(yīng)用程序有個日志的需求,您可以無須修改任何一行程序代碼,就將這個需求加入到原先的應(yīng)用程序中,而若您愿意,也可以在不修改任何程序的情況下,將這個日志功能移除。AOP簡介AOP(Aspect Oriented Programming)它是一種設(shè)計模式,用于實現(xiàn)一個系統(tǒng)中的某一個方面的應(yīng)用。日志攔截授權(quán)認(rèn)證 事務(wù)攔截方法緩存數(shù)據(jù)審計AOP簡介系統(tǒng)中具有的共性功能AOP簡介從應(yīng)用模塊中主動去調(diào)用公共模塊,也就是應(yīng)用模塊要很清楚公共模塊的功能,還有具體的調(diào)用方法才行,應(yīng)用模塊是依賴于公共模塊的,是耦合的,這樣一來,要想修改公共模塊就會很困難了。有一個非常非常
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)墻板施工報價協(xié)議模板匯編版A版
- 2024年高速公路監(jiān)控系統(tǒng)電線敷設(shè)合同
- 2024年航空航天零部件生產(chǎn)合同承包協(xié)議范本3篇
- 專業(yè)化進(jìn)修培訓(xùn)管理合同書2024版版B版
- 2025年度餐飲企業(yè)員工工作環(huán)境改善與安全保障合同3篇
- 2025年度云計算數(shù)據(jù)中心建設(shè)合同(安全高效版)3篇
- 2024施工合同路燈施工項目驗收標(biāo)準(zhǔn)3篇
- 2024年設(shè)計行業(yè)技術(shù)交流合同協(xié)議書3篇
- 2024新款吉他租賃協(xié)議電子版下載版B版
- 2024年綜合性物業(yè)管理服務(wù)協(xié)議細(xì)則版B版
- 【高一上】【期末話收獲 家校話未來】期末家長會
- 滯銷風(fēng)險管理制度內(nèi)容
- 關(guān)于物業(yè)服務(wù)意識的培訓(xùn)
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- 排污許可證辦理合同1(2025年)
- GB/T 44890-2024行政許可工作規(guī)范
- 上??颇恳豢荚囶}庫參考資料1500題-上海市地方題庫-0
- 【7地XJ期末】安徽省宣城市寧國市2023-2024學(xué)年七年級上學(xué)期期末考試地理試題(含解析)
- 設(shè)備操作、保養(yǎng)和維修規(guī)定(4篇)
- 2025年度日歷臺歷黃歷模板
- 醫(yī)療行業(yè)十四五規(guī)劃
評論
0/150
提交評論