国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Java EE開發四大常用框架

開發 后端
本文將對Java EE中常用的四個框架Swing、Hibernate、Struts、Spring做一下系統的歸納,希望大家喜歡。

我們對Java EE的框架有過很多介紹, 本文將對Java EE中常用的四個框架做一下系統的歸納,希望大家喜歡。

Struts

Struts是一個基于Sun Java EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的。

Struts框架可分為以下四個主要部分,其中三個就和MVC模式緊密相關:

1、模型 (Model),本質上來說在Struts中Model是一個Action類(這個會在后面詳細討論),開發者通過其實現商業邏輯,同時用戶請求通過控制器(Controller)向Action的轉發過程是基于由struts-config.xml文件描述的配置信息的。

2、視圖(View),View是由與控制器Servlet配合工作的一整套JSP定制標簽庫構成,利用她們我們可以快速建立應用系統的界面。

3、控制器(Controller),本質上是一個Servlet,將客戶端請求轉發到相應的Action類。

4、一堆用來做XML文件解析的工具包,Struts是用XML來描述如何自動產生一些JavaBean的屬性的,此外Struts還利用XML來描述在國際化應用中的用戶提示信息的(這樣一來就實現了應用系統的多語言支持)。

#p#

Spring

Spring是輕量級的Java EE應用程序框架。

Spring的核心是個輕量級容器(container),實現了IoC(Inversion of Control)模式的容器,Spring的目標是實現一個全方位的整合框架,在Spring框架下實現多個子框架的組合,這些子框架之間彼此可以獨立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案 。

Spring不會特別去提出一些子框架來與現有的OpenSource框架競爭,除非它覺得所提出的框架夠新夠好,例如Spring有自己的 MVC框架方案,因為它覺得現有的MVC方案有很多可以改進的地方,但它不強迫您使用它提供的方案,您可以選用您所希望的框架來取代其子框架,例如您仍可以在Spring中整合您的Struts框架 。

Spring的核心概念是IoC,IoC的抽象概念是「依賴關系的轉移」,像是「高層模組不應該依賴低層模組,而是模組都必須依賴于抽象」是 IoC的一種表現,「實現必須依賴抽象,而不是抽象依賴實現」也是IoC的一種表現,「應用程序不應依賴于容器,而是容器服務于應用程序」也是IoC的一種表現。

Spring的架構性的好處

Spring能有效地組織你的中間層對象,無論你是否選擇使用了EJB。如果你僅僅使用了Struts或其他的包含了Java EE特有APIs的framework,你會發現Spring關注了遺留下的問題。

Spring能消除在許多工程上對Singleton的過多使用。根據我的經驗,這是一個主要的問題,它減少了系統的可測試性和面向對象特性。

Spring 能消除使用各種各樣格式的屬性定制文件的需要,在整個應用和工程中,可通過一種一致的方法來進行配置。曾經感到迷惑,一個特定類要查找迷幻般的屬性關鍵字或系統屬性,為此不得不讀Javadoc乃至源編碼嗎?有了Spring,你可很簡單地看到類的JavaBean屬性。倒置控制的使用(在下面討論)幫助完成這種簡化。Spring能通過接口而不是類促進好的編程習慣,減少編程代價到幾乎為零。

Spring被設計為讓使用它創建的應用盡可能少的依賴于他的APIs。在Spring應用中的大多數業務對象沒有依賴于Spring。

使用Spring構建的應用程序易于單元測試。

Spring能使EJB的使用成為一個實現選擇,而不是應用架構的必然選擇。你能選擇用POJOs或local EJBs來實現業務接口,卻不會影響調用代碼。

Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適于許多web應用。例如,Spring能使用AOP提供聲明性事務而不通過使用EJB容器,如果你僅僅需要與單個的數據庫打交道,甚至不需要JTA實現。

Spring為數據存取提供了一致的框架,不論是使用JDBC或O/R mapping產品(如Hibernate)。

Spring確實使你能通過最簡單可行的解決辦法解決你的問題。這些特性是有很大價值的。

Spring能做什么?

Spring提供許多功能,在此我將快速地依次展示其各個主要方面。

任務描述:

首先,讓我們明確Spring范圍。盡管Spring覆蓋了許多方面,但我們已經有清楚的概念,它什么應該涉及和什么不應該涉及。

Spring的主要目的是使Java EE易用和促進好編程習慣。

Spring 不重新開發已有的東西。因此,在Spring中你將發現沒有日志記錄的包,沒有連接池,沒有分布事務調度。這些均有開源項目提供(例如 Commons Logging 用來做所有的日志輸出,或Commons DBCP用來作數據連接池),或由你的應用程序服務器提供。因為同樣的的原因,我們沒有提供O/R mapping層,對此,已有有好的解決辦法如Hibernate和JDO。

Spring的目標是使已存在的技術更加易用。例如,盡管我們沒有底層事務協調處理,但我們提供了一個抽象層覆蓋了JTA或任何其他的事務策略。

Spring沒有直接和其他的開源項目競爭,除非我們感到我們能提供新的一些東西。例如,象許多開發人員,我們從來沒有為Struts高興過,并且感到在MVC web framework中還有改進的余地。在某些領域,例如輕量級的 IoC容器和AOP框架,Spring有直接的競爭,但是在這些領域還沒有已經較為流行的解決方案。(Spring在這些區域是開路先鋒。)

Spring也得益于內在的一致性。

所有的開發者都在唱同樣的的贊歌,基礎想法依然是Expert One-on-One Java EE設計與開發的那些。

并且我們已經能夠使用一些主要的概念,例如倒置控制,來處理多個領域。

Spring在應用服務器之間是可移植的。

當然保證可移植性總是一次挑戰,但是我們避免任何特定平臺或非標準化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的應用服務器上的用戶。

Spring的核心即是個IoC/DI的容器,它可以幫程序設計人員完成組件之間的依賴關系注入,使得組件之間的依賴達到最小,進而提高組件的重用性,Spring是個低侵入性(invasive)的框架,Spring中的組件并不會意識到它正置身于Spring中,這使得組件可以輕易的從框架中脫離,而幾乎不用任何的修改,反過來說,組件也可以簡單的方式加入至框架中,使得組件甚至框架的整合變得容易。

Spring最為人重視的另一方面是支持AOP(Aspect-Oriented Programming),然而AOP框架只是Spring支持的一個子框架,說Spring框架是AOP框架并不是一件適當的描述,人們對于新奇的 AOP關注映射至Spring上,使得人們對于Spring的關注集中在它的AOP框架上,雖然有所誤解,但也突顯了Spring的另一個令人關注的特色。

Spring也提供MVC Web框架的解決方案,但您也可以將自己所熟悉的MVC Web框架與Spring解合,像是Struts、Webwork等等,都可以與Spring整合而成為進用于自己的解決方案。Spring也提供其它方面的整合,像是持久層的整合如JDBC、O/R Mapping工具(Hibernate、iBATIS)、事務處理等等,Spring作了對多方面整合的努力,故說Spring是個全方位的應用程序框架。

#p#

Hibernate

Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了輕量級的對象封裝,使得Java程序員可以使用對象編程思維來操縱數據庫。Hibernate可以在應用EJB的Java EE架構中取代CMP,完成數據持久化。它還可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用

Hibernate的工作方式

Hibernate不會對您造成妨礙,也不會強迫您修改對象的行為方式。它們不需要實現任何不可思議的接口以便能夠持續存在。惟一需要做的就是創建一份 XML“映射文檔”,告訴Hibernate您希望能夠保存在數據庫中的類,以及它們如何關聯到該數據庫中的表和列,然后就可以要求它以對象的形式獲取數據,或者把對象保存為數據。與其他解決方案相比,它幾乎已經很完美了。

由于本文只是一篇介紹性的文章,所以不會引入構建和使用Hibernate映射文檔的具體例子(我在《Hibernate: A Developer's Notebook》一書的頭幾章中已經介紹了一個例子)。此外,在網上和Hibernate的在線文檔中,還可以找到一些不錯的例子,請參見下面的“其他信息”部分。它實際上相當直觀。應用程序對象中的屬性以一種簡單而自然的方式與正確的數據庫結構相關聯。

運行時,Hibernate讀取映射文檔,然后動態構建Java類,以便管理數據庫與Java之間的轉換。在 Hibernate中有一個簡單而直觀的API,用于對數據庫所表示的對象執行查詢。要修改這些對象,(一般情況下)只需在程序中與它們進行交互,然后告訴Hibernate保存修改即可。類似地,創建新對象也很簡單;只需以常規方式創建它們,然后告訴Hibernate有關它們的信息,這樣就能在數據庫中保存它們。

Hibernate API學習起來很簡單,而且它與程序流的交互相當自然。在適當的位置調用它,就可以達成目的。它帶來了很多自動化和代碼節省方面的好處,所以花一點時間學習它是值得的。而且還可以獲得另一個好處,即代碼不用關心要使用的數據庫種類(否則的話甚至必須知道)。我所在的公司就曾有過在開發過程后期被迫更換數據庫廠商的經歷。這會造成巨大的災難,但是借助于Hibernate,只需要簡單地修改Hibernate配置文件即可。

這里的討論假定您已經通過創建Hibernate映射文檔,建立了一個關系數據庫,并且擁有要映射的Java 類。有一個Hibernate“工具集”可在編譯時使用,以支持不同的工作流。例如,如果您已經擁有Java類和映射文檔,Hibernate可以為您創建(或更新)必需的數據庫表。或者,僅僅從映射文檔開始,Hibernate也能夠生成數據類。或者,它可以反向設計您的數據庫和類,從而擬定映射文檔。還有一些用于Eclipse的alpha 插件,它們可以在IDE中提供智能的編輯支持以及對這些工具的圖形訪問。

使用Hibernate的場合

既然Hibernate看起來如此靈活好用,為什么還要使用其他的工具呢?下面有一些場景,可以幫助您做出判斷(或許通過提供一些比較和上下文,可以有助于鑒別非常適用Hibernate的場合)。

如果應用對于數據存儲的需要十分簡單——例如,您只想管理一組用戶優先選擇——您根本不需要數據庫,更不用說一個優秀的對象-關系映射系統了(即使它也如Hibernate這般易于使用)!從Java 1.4開始,有一個標準的Java Preferences API可以很好地發揮這個作用。

對于熟悉使用關系數據庫和了解如何執行完美的SQL查詢與企業數據庫交互的人來說,Hibernate似乎有些礙手礙腳,這就像帶有動力和自動排擋的快艇車會使注重性能的賽車駕駛員不耐煩一樣。如果您屬于這種人,如果您所在的項目團隊擁有一個強大的DBA,或者有一些存儲過程要處理,您可能想研究一下iBATIS。Hibernate的創建者本身就把iBATIS當作是另一種有趣的選擇。我對它很有興趣,因為我們曾為一個電子商務站點開發了一個類似的系統(其功能更為強大),而且從那時到現在,我們已經在其他環境中使用過它,盡管在發現Hibernate之后,在新項目中我們通常更喜歡使用Hibernate。您可以認為,以SQL為中心的解決方案(比如iBATIS)是“反向的”對象/關系映射工具,而 Hibernate是一個更為傳統的ORM。

當然,還有其他的外部原因會導致采用另外的方法。比如,在一個企業環境中,必須使用成熟的EJB架構(或者其他的一些非普通對象映射系統)。可以為提供自己的數據存儲工具的平臺量身定做代碼,比如Mac OS X's Core Data。使用的可能是像XML DTD這樣的存儲規范,而它根本不涉及關系數據庫。

但是,如果您使用的是富對象模型,而且想要靈活、輕松且高效地保存它(無論您是否正要開始或已經決定使用關系數據庫,只要這是一個選擇——而且存在可用的優秀免費數據庫,比如MySQL,或可嵌入Java的HSQLDB,它就應該始終是一個選擇),那么 Hibernate很可能就是您理想的選擇。您可能會驚訝于節省的時間之多,以及您將會多么地喜歡使用它.

#p#

Swing

圖形用戶接口(GUI)庫最初的設計目的是讓程序員構建一個通用的GUI,使其在所有的平臺上都能夠正常的顯示。但是比較遺憾的是AWT產生的是在各系統看來都同樣欠佳的圖形用戶接口,JAVA1.2為老的java1.0 AWT添加了Java基礎類(JFC),這是一個被稱為“Swing”的GUI的一部分。Swing是第二代GUI開發工具集,AWT采用了與特定平臺相關的實現,而絕大部分Swing組件卻不是。Swing是構筑在AWT上層的一組GUI組件的集合,為了保證可移植性,它完全用Java語言編寫,與AWT相比,Swing提供了更完整的組件,引入了許多新的特性和能力。Swing提供了更多的組件庫,如:JTable,JTree,Jcombox。Swing也增強了AWT中組件的功能。正是因為Swing具備了如此多的優勢所以我們以后在開發中都使用Swing。JComponent類是Swing組件的基類,而JComponent繼承自Container類,因此,所有的Swing組件都是AWT的容器。Swing采用了MVC設計模式。 

【編輯推薦】

  1. JAVA J2EE框架一覽
  2. Java開源J2EE框架
  3. J2EE框架的種類一覽
責任編輯:佚名 來源: javaeye
相關推薦

2011-06-22 08:38:35

Java EE

2011-03-02 11:33:51

軟件設計師

2009-08-28 10:47:46

Java EE容器

2010-09-01 11:01:02

iUIjQTouchSencha Touc

2011-03-21 09:01:49

CSS框架

2011-07-07 08:53:15

真相TitaniumPhoneGap

2012-05-29 09:23:23

HTML5移動應用框架jQTouch

2015-07-17 09:50:16

Carthage優劣比較

2009-06-16 15:33:13

AJAX框架jQueryExt JS

2024-09-02 07:54:36

2021-11-03 15:15:21

Go重構技術

2024-02-22 14:04:04

開發框架

2017-01-05 15:38:33

機器學習開源框架

2011-06-28 13:43:50

Java EE

2014-03-27 15:57:45

Android組件Activity

2015-04-02 15:50:47

數據倉庫數據挖掘

2011-10-21 13:59:48

Java云計算

2013-01-10 14:21:24

Android開發組件Activities

2025-04-28 09:31:37

2014-12-17 10:43:01

Hybrid App平臺開發
點贊
收藏

51CTO技術棧公眾號

嫩呦国产一区二区三区av| 国产亚洲人成a在线v网站| 国产高清无密码一区二区三区| 欧美高清视频在线观看| 国产午夜精品一区理论片| 久久久久久久久久久电影| 另类视频在线观看+1080p| 欧美日韩一区二区三区在线电影 | 国内视频精品| 欧美成人免费全部| av最新在线| 欧美优质美女网站| 少妇高潮露脸国语对白| 国产高清久久久| 六月婷婷久久| 香蕉视频官网在线观看日本一区二区| 久久精品国产欧美亚洲人人爽| 羞羞污视频在线观看| 精品久久久久久久久久| 亚洲国产日韩欧美在线观看| 国产福利视频一区二区三区| 久久精品日产第一区二区三区精品版 | 99影视tv| 成人情趣视频网站| 欧美精品久久久久| 中文成人激情娱乐网| 亚洲欧美日韩久久久久久| www.综合网.com| 日韩美女视频在线| av电影免费在线观看| 欧美夫妻性生活| 黄色av网站在线免费观看| 香蕉成人啪国产精品视频综合网| 久久国产这里只有精品| 国产拍欧美日韩视频二区| 六月丁香婷婷在线| 欧美国产精品v| 农村妇女精品一二区| jlzzjlzz国产精品久久| 国产成人一二三区| 国产jizzjizz一区二区| 欧美这里只有精品| 波多野结衣中文字幕一区二区三区| 一级做a爰片久久| 精品亚洲国产成人av制服丝袜| 日韩精品一线二线三线| 蜜臀va亚洲va欧美va天堂| 欧美精品一区二区三区久久| 国产亚洲在线观看| 日韩精品另类天天更新| 老司机一区二区| 成人在线视频一区二区三区| 成人性视频网站| 免费在线观看的av网站| 亚洲日本在线视频观看| 亚洲成人基地| 欧美三级三级三级爽爽爽| 美女网站视频在线| 亚洲美女喷白浆| 国产麻豆精品| 国产91在线播放精品91| 午夜欧美视频| 亚洲免费久久| 2024国产精品| 免费看成一片| 欧美日韩一区视频| heyzo中文字幕在线| 亚洲四色影视在线观看| 亚洲小说春色综合另类电影| 国产精品视频免费在线| 羞羞答答国产精品www一本| 久久久99精品视频| 国产精品久久久久久久久晋中| 亚洲热app| 精品毛片乱码1区2区3区| 欧美高清免费| 国产色综合天天综合网| 免费在线一区观看| 99re精彩视频| 3d动漫精品啪啪一区二区竹菊| 97se综合| 51视频国产精品一区二区| 国产一区亚洲| a√天堂在线观看| 午夜精品久久久久久久久| 精精国产xxxx视频在线野外| 国内精品久久久久久久| 在线亚洲一区| 国产精品久久久毛片| 精品视频在线免费| 美女诱惑一区| 亚洲精品天堂成人片av在线播放 | 91成人在线精品视频| 欧美激情麻豆| 国产精品国产亚洲伊人久久| 亚洲综合影院| 欧美日韩精品欧美日韩精品一综合| 激情小说综合网| 在线欧美福利| 亚洲一区免费看| 激情偷拍久久| 亚洲国产一区在线| 99精品视频免费| 欧美老少做受xxxx高潮| 亚乱亚乱亚洲乱妇| 亚洲人成精品久久久久久| 午夜视频国产| 国产拍揄自揄精品视频麻豆| www.国产二区| 秋霞一区二区三区| 久久久天堂国产精品女人| 国产资源在线观看入口av| 伊人久久五月天| 免费动漫网站在线观看| 日韩一区二区三区在线观看| 国产精品无码久久久久| 午夜亚洲成人| 最近2019中文字幕第三页视频| 999久久久91| 久久9精品区-无套内射无码| 欧美精品在线一区二区| 欧美日韩激情| 欧美牲交a欧美牲交aⅴ免费真| 欧美日韩不卡一区二区| 九九热播视频在线精品6| 免费成人深夜夜行网站视频| 欧洲av在线精品| 成人午夜国产| 久草在线免费二| 久久精品国产99国产精品澳门| 黄色在线观看网站| 国产日韩av网站| 欧美成人性生活| 久久成人羞羞网站| 国产欧美精品一区二区| 成人免费视频一区| 免费毛片在线看片免费丝瓜视频 | 日本不卡免费高清视频在线| 91精品国产综合久久男男| 久久久精品黄色| 姬川优奈av一区二区在线电影| 精品日本一区二区| 欧美日韩在线视频一区| 激情综合网站| 欧美色老女人| 午夜精品久久久久久久久久久久久 | 亚洲黄页网站| 欧美精品aaaa| 久久91亚洲精品中文字幕| 成人国产精品免费观看| 三妻四妾的电影电视剧在线观看| 久久久久久九九九九| 欧美顶级少妇做爰| 国产日韩一区| 国内精品久久久久久野外| 国产区一区二区| 538prom精品视频线放| 亚洲精品综合| 91精品久久久| 日韩资源av在线| 亚洲高清福利视频| 久久99精品国产麻豆婷婷| 超碰一区二区| 18禁裸男晨勃露j毛免费观看| 亚洲深夜福利在线| 99久久久精品| 欧美黄色影院| 中文字幕在线观看第一页| 5566av亚洲| 宅男噜噜噜66一区二区66| 日韩黄色片在线观看| 伊人网在线播放| 少妇人妻在线视频| 欧美专区在线视频| 欧美性猛交xxxx| 亚洲欧美清纯在线制服| 丝袜诱惑一区二区| 美女福利视频在线| 国产99久久久欧美黑人| 色婷婷av一区二区| 日本中文一区二区三区| 成人日韩在线| 在线黄色免费观看| 成人在线免费观看视视频| 欧美精品久久久久久久久老牛影院 | 日韩精品成人在线观看| www99avcom| 国产手机精品在线| 国产视频欧美视频| 国产三级精品视频| 中文字幕日韩一区二区不卡| 波多野结衣在线播放| 成人一级片网站| 99国产在线| 伊人久久久久久久久久久久久| 亚洲欧洲一区二区在线播放| 红桃视频国产精品| 亚洲成av在线| 一区二区三区不卡在线视频| 亚洲国产日韩综合一区|