- 搞定J2EE核心技術與企業應用
- 常建功 王向華編著
- 1579字
- 2018-12-29 13:49:36
1.5 Java Web開發所需要的技術
前面對JavaEE和MVC進行了講解,從講解中可以知道,要開發Java Web需要遵循上面的標準和規范,當然讀者可以自己實現上述規范,從而進行Java Web開發。但幸運的是,目前市場上有不少的開源框架已經實現了上述規范,比如Struts、Spring、Hibernate等,這些開源框架大大地減輕了開發人員的工作量。
1.5.1 Ajax
Ajax并不是一個新技術,它其實是整合了XMLHttpRequest、JavaScript、DOM、CSS、XML等眾多技術。
Google的Sugges(t搜索建議)、Map、Gmail等都實現了Ajax技術。它采用XMLHttpRequest對象進行數據的異步交互,使用JavaScript增強用戶體驗,使用DOM組織內容,使用CSS顯示外觀,使用XML封裝數據。在創建一個XMLHttpRequest對象時,一般采用如下寫法:
var xmlhttp; if (window.XMLHttpRequest) { //其他瀏覽器 xmlhttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { //IE瀏覽器 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlhttp = new ActiveXObject('Msxml2.XMLHTTP'); } }
采用Ajax還需要用到JavaScript、DOM、CSS、XML等技術,在后面的章節中筆者將詳細介紹上述技術。
隨著Ajax的逐漸流行,開發人員發現,Ajax的代碼非常零亂,難于維護。為了解決這個問題,很多的Ajax框架便應運而生了,比如Ext、Prototype、DOJO、DWR、GWT、Buffalo等。
這里以Ext為例進行簡單介紹。Ext最初來源于Yui-Ext,后來Ext又獨立于Yui發展,它積累了眾多的組件,有表格、表單、動態樹、菜單、工具條、對話框等,以方便開發人員的使用。Ext的官方網址為http://www.sencha.com/,首頁如圖1.14所示。

圖1.14 Ext的首頁
Ext一經推出,就以其優美的界面迅速流行起來,開發人員只需要很少的JavaScript代碼,就能實現一個漂亮的界面和復雜的功能,比如實現一個帶Tab的對話框,如圖1.15所示。

圖1.15 Ext實現帶Tab對話框的示例
上述復雜的對話框示例所需要的JavaScript代碼如下:
Ext.onReady(function(){ //定義變量tabs var tabs = Ext.createWidget('tabpanel', { renderTo: 'tabs1', width: 450, activeTab: 0, defaults :{ bodyPadding: 10 }, items: [{ contentEl:'script', title: 'Short Text', closable: true },{ contentEl:'markup', title: 'Long Text' }] }); //定義變量tabs2 var tabs2 = Ext.createWidget('tabpanel', { renderTo: document.body, activeTab: 0, width: 600, height: 250, plain: true, defaults :{ autoScroll: true, bodyPadding: 10 }, items: [{ title: 'Normal Tab', html: "My content was added during construction." },{ title: 'Ajax Tab 1', loader: { url: 'ajax1.htm', contentType: 'html', loadMask: true }, listeners: { activate: function(tab) { tab.loader.load(); } } },{ title: 'Ajax Tab 2', loader: { url: 'ajax2.htm', contentType: 'html', autoLoad: true, params: 'foo=123&bar=abc' } },{ title: 'Event Tab', listeners: { activate: function(tab){ alert(tab.title + ' was activated.'); } }, html: "I am tab 4's content. I also have an event listener attached." },{ title: 'Disabled Tab', disabled: true, html: "Can't see me cause I'm disabled" } ] }); });
通過上面的示例,讀者可以看出,要實現一個帶Tab的對話框,只需要不多的JavaScript代碼即可實現,這在沒有Ext之前,是很難想象的。Ext提供了與后臺進行交互的功能,但與Ext本身聯系比較緊密,不方便單獨使用它的Ajax功能。
1.5.2 MVC框架
目前實現MVC的框架非常多,比如大家都熟悉的Struts、Spring和WebWork等。通過前面對Mode l的介紹可以知道,Model 2會導致多個Controller的出現,并且對頁面導航的處理比較復雜,所以Craig R. McClanahan于2000年5月提交了一個框架給Java Community,這就是后來的Struts。2001年7月,Struts 1.0正式發布。截至到目前,Struts 2.2.3已經正式發布了。
Struts 2概覽圖如圖1.16所示。

圖1.16 Struts 2概覽圖
在2002年,Rod Johnson編寫了一本書《Expert One-on-One J2EE設計與開發》,在這本書中,他描繪了Spring的雛形。最終,他因為不能忍受EJB實現的繁雜,從而決定開發一個框架,這就是Spring。Spring由6部分組成,分別實現了開發Java應用程序的不同內容。得益于Spring框架設計的靈活性,使得它能與眾多開源框架相結合。
Spring 3框架圖如圖1.17所示。

圖1.17 Spring 3 框架圖
可以看到,Spring 3的整個框架的核心建立在Core的基礎之上,包括DAO、ORM、JEE、Web和AOP,由此也可以看出Spring 3的強大。
1.5.3 持久層技術
隨著EJB 3的發布,也有越來越多的人直接使用JPA。Hibernate 3也提供了對JPA的支持,因此,在當前的Java持久層框架中,Hibernate 3仍然是一個比較好的選擇。Hibernate在2001年發布了它的第一個正式版本;2003年6月,Hibernate 2發布;2003年年末,Hibernate被JBoss吸納;2005年3月,Hibernate 3正式發布。
為什么要使用ORM(Object/Relational Mapping)呢?這是因為開發人員使用的技術是面向對象技術,而使用的數據庫卻是關系型數據庫,一個完整的類很難以對象的方式存儲在一個關系型數據庫中,它更適合存儲在對象型數據庫中。但目前關系型數據庫仍然占主流位置,所以要使用ORM在對象型和關系型之間建立關系,從而可以使開發人員完全用面向對象的思想去設計業務邏輯,而數據的存儲仍然使用關系型數據庫。
Hibernate對Java和.NET的支持體系圖如圖1.18所示。

圖1.18 Hibernate對Java和.NET的支持體系圖
可以看到,因為JDK 5.0推出的Annotations,Hibernate也開始支持Annotations,從而推出了Hibernate Annotations,使得Hibernate 3的配置文件不再只有XML這一種選擇。
- 課課通計算機原理
- Unreal Engine:Game Development from A to Z
- Mastering Matplotlib 2.x
- 自動控制工程設計入門
- 實時流計算系統設計與實現
- 21天學通C#
- 基于單片機的嵌入式工程開發詳解
- Lightning Fast Animation in Element 3D
- Enterprise PowerShell Scripting Bootcamp
- Google SketchUp for Game Design:Beginner's Guide
- 分數階系統分析與控制研究
- Visual FoxPro數據庫基礎及應用
- 過程控制系統
- Apache源代碼全景分析(第1卷):體系結構與核心模塊
- ARM體系結構與編程