<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0
     

    Web開發(fā)領(lǐng)域的最新時(shí)髦術(shù)語其實(shí)質(zhì)是“舊貌換新顏”。

    Ajax(Asynchronous JavaScript and XML)是結(jié)合了Java技術(shù)、XML以及JavaScript等編程技術(shù),可以讓開發(fā)人員構(gòu)建基于Java技術(shù)的Web應(yīng)用,并打破了使用頁面重載的慣例。

    Ajax是使用客戶端腳本與Web服務(wù)器交換數(shù)據(jù)的Web應(yīng)用開發(fā)方法。這樣,Web頁面不用打斷交互流程進(jìn)行重新加裁,就可以動(dòng)態(tài)地更新。使用Ajax,用戶可以創(chuàng)建接近本地桌面應(yīng)用的直接、高可用、更豐富、更動(dòng)態(tài)的Web用戶界面。

    異步JavaScript和XML(AJAX)不是什么新技術(shù),而是指這樣一種方法:使用幾種現(xiàn)有技術(shù)——包括級(jí)聯(lián)樣式表(CSS)、JavaScript、XHTML、XML和可擴(kuò)展樣式語言轉(zhuǎn)換(XSLT),開發(fā)外觀及操作類似桌面軟件的Web應(yīng)用軟件。實(shí)現(xiàn)Ajax的所有組件都已存在了許多年。Adaptive Path的用戶體驗(yàn)戰(zhàn)略部門主管兼創(chuàng)辦合伙人Jesse James Garrett今年2月發(fā)表在Adaptive Path網(wǎng)站上的一篇文章中杜撰了這個(gè)術(shù)語。

    異步這個(gè)詞是指AJAX應(yīng)用軟件與主機(jī)服務(wù)器進(jìn)行聯(lián)系的方式。如果使用舊模式,每當(dāng)用戶執(zhí)行某種操作、向服務(wù)器請(qǐng)求獲得新數(shù)據(jù),Web瀏覽器就會(huì)更新當(dāng)前窗口。

    如果使用AJAX的異步模式,瀏覽器就不必等用戶請(qǐng)求操作,也不必更新整個(gè)窗口就可以顯示新獲取的數(shù)據(jù)。只要來回傳送采用XML格式的數(shù)據(jù),在瀏覽器里面運(yùn)行的JavaScript代碼就可以與服務(wù)器進(jìn)行聯(lián)系。JavaScript代碼還可以把樣式表加到檢索到的數(shù)據(jù)上,然后在現(xiàn)有網(wǎng)頁的某個(gè)部分加以顯示。

    在面向消費(fèi)者的諸多應(yīng)用當(dāng)中,Google的Gmail和Google Maps就是最常見的例子。在Gmail當(dāng)中,AJAX負(fù)責(zé)如何開啟線程會(huì)話,以顯示不同郵件的文本內(nèi)容。而在Maps當(dāng)中,AJAX允許用戶以一種似乎無縫的方式拖拉及滾動(dòng)地圖。

    還有雅虎的Flickr像片共享應(yīng)用和亞馬遜網(wǎng)站的A9搜索引擎。另外,雅虎新的Web郵件服務(wù)可能很快就會(huì)吸引AJAX支持者的莫大關(guān)注,這項(xiàng)服務(wù)基于雅虎收購Oddpost后得到的技術(shù)。

    這些UI都充分地使用了后臺(tái)通道,也被一些開發(fā)者稱為“Web 2.0”,并導(dǎo)致了大家對(duì)Ajax應(yīng)用興趣的猛漲。

    然而,AJAX應(yīng)用軟件廠商越來越把目光瞄準(zhǔn)了企業(yè)。譬如說,Scalix的Web Access電子郵件應(yīng)用軟件其實(shí)比微軟Outlook自己的Web郵件界面更像Outlook。

    不過AJAX應(yīng)用軟件的適用領(lǐng)域具有一定的局限性。因?yàn)樗鼈兝昧艘恍┳钚碌腤eb技術(shù),所以只能在某些Web瀏覽器里面運(yùn)行——不過AJAX適用的瀏覽器正越來越多。

    一、AJAX開發(fā)者的最新工具和技術(shù)

    基于XML的異步JavaScript,簡稱AJAX,是當(dāng)前Web創(chuàng)新(稱為Web2.0)中的一個(gè)王冠。感謝組成AJAX的各種技術(shù),Web應(yīng)用的交互如Flickr, Backpack和Google在這方面已經(jīng)有質(zhì)的飛躍。這個(gè)術(shù)語源自描述從基于網(wǎng)頁的Web應(yīng)用到基于數(shù)據(jù)的應(yīng)用的轉(zhuǎn)換。在基于數(shù)據(jù)的應(yīng)用中,用戶需求的數(shù)據(jù)如聯(lián)系人列表,可以從獨(dú)立于實(shí)際網(wǎng)頁的服務(wù)端取得并且可以被動(dòng)態(tài)地寫入網(wǎng)頁中,給緩慢的Web應(yīng)用體驗(yàn)著色使之像桌面應(yīng)用一樣。

    雖然大部分開發(fā)人員在過去使用過XMLHttp或者使用Iframe來加載數(shù)據(jù),但僅到現(xiàn)在我們才看到傳統(tǒng)的開發(fā)人員和公司開始采用這些技術(shù)。就像新的編程語言或模型伴隨著更多的痛苦,開發(fā)人員需要學(xué)習(xí)新的技巧及如何最好利用這些新技術(shù)。

    二、AJAX模式

    許多重要的技術(shù)和AJAX開發(fā)模式可以從現(xiàn)有的知識(shí)中獲取。例如,在一個(gè)發(fā)送請(qǐng)求到服務(wù)端的應(yīng)用中,必須包含請(qǐng)求順序、優(yōu)先級(jí)、超時(shí)響應(yīng)、錯(cuò)誤處理及回調(diào),其中許多元素已經(jīng)在Web服務(wù)中包含了,就像現(xiàn)在的SOA。AJAX開發(fā)人員擁有一個(gè)完整的系統(tǒng)架構(gòu)知識(shí)。同時(shí),隨著技術(shù)的成熟還會(huì)有許多地方需要改進(jìn),特別是UI部分的易用性。

    AJAX開發(fā)與傳統(tǒng)的CS開發(fā)有很大的不同。這些不同引入了新的編程問題,最大的問題在于易用性。由于AJAX依賴瀏覽器的JavaScript和XML,瀏覽器的兼容性和支持的標(biāo)準(zhǔn)也變得和JavaScript的運(yùn)行時(shí)性能一樣重要了。這些問題中的大部分來源于瀏覽器、服務(wù)器和技術(shù)的組合,因此必須理解如何才能最好的使用這些技術(shù)。

    綜合各種變化的技術(shù)和強(qiáng)耦合的客戶服務(wù)端環(huán)境,AJAX提出了一種新的開發(fā)方式。AJAX開發(fā)人員必須理解傳統(tǒng)的MVC架構(gòu),這限制了應(yīng)用層次之間的邊界。同時(shí),開發(fā)人員還需要考慮CS環(huán)境的外部和使用AJAX技術(shù)來重定型MVC邊界。最重要的是,AJAX開發(fā)人員必須禁止以頁面集合的方式來考慮Web應(yīng)用而需要將其認(rèn)為是單個(gè)頁面。一旦UI設(shè)計(jì)與服務(wù)架構(gòu)之間的范圍被嚴(yán)格區(qū)分開來后,開發(fā)人員就需要更新和變化的技術(shù)集合了。

    三、時(shí)刻想著用戶

    AJAX的最大機(jī)遇在于用戶體驗(yàn)。在使應(yīng)用更快響應(yīng)和創(chuàng)新的過程中,定義Web應(yīng)用的規(guī)則正在被重寫;因此開發(fā)人員必須更注重用戶?,F(xiàn)在用戶已經(jīng)逐漸習(xí)慣如何使用Web應(yīng)用了。例如用戶通常希望每一次按鈕點(diǎn)擊會(huì)導(dǎo)致幾秒的延遲和屏幕刷新,但AJAX正在打破這種長時(shí)間的狀況。因此用戶需要重新體驗(yàn)按鈕點(diǎn)擊的響應(yīng)了。

    可用性是AJAX另人激動(dòng)的地方而且已經(jīng)產(chǎn)生了幾種新穎的技術(shù)。其中最引人注目的是一種稱為“黃色隱出”的技術(shù),他在數(shù)據(jù)更新之前時(shí)將用戶界面變?yōu)辄S色,更新完成后立刻恢復(fù)原來的顏色。AJAX開發(fā)人員將用戶從Web應(yīng)用的負(fù)載中解放出來;小心地利用AJAX提供的豐富接口,不久桌面開發(fā)人員會(huì)發(fā)現(xiàn)AJAX是他們的方向。

    四、幾種工具和技術(shù)

    隨著AJAX迅速地引人注目起來,我想開發(fā)人員對(duì)這種技術(shù)的期待也迅速地增加。就像任何新技術(shù),AJAX的興旺也需要一整個(gè)開發(fā)工具/編程語言及相關(guān)技術(shù)系統(tǒng)來支撐。

    1、JavaScript

    如名字所示AJAX的概念中最重要而最被忽視的是他也是一種JavaScript編程語言。JavaScript是一種粘合劑使AJAX應(yīng)用的各部分集成在一起。在大部分時(shí)間,JavaScript通常被服務(wù)端開發(fā)人員認(rèn)為是一種企業(yè)級(jí)應(yīng)用不需要使用的東西應(yīng)該盡力避免。這種觀點(diǎn)來來自以前編寫JavaScript代碼的經(jīng)歷:繁雜而又易出錯(cuò)的語言。類似的,他也被認(rèn)為將應(yīng)用邏輯任意地散布在服務(wù)端和客戶端中,這使得問題很難被發(fā)現(xiàn)而且代碼很難重用。在AJAX中JavaScript主要被用來傳遞用戶界面上的數(shù)據(jù)到服務(wù)端并返回結(jié)果。XMLHttpRequest對(duì)象用來響應(yīng)通過HTTP傳遞的數(shù)據(jù),一旦數(shù)據(jù)返回到客戶端就可以立刻使用DOM將數(shù)據(jù)放到網(wǎng)面上。

    2、XMLHttpRequest

    XMLHttpRequest對(duì)象在大部分瀏覽器上已經(jīng)實(shí)現(xiàn)而且擁有一個(gè)簡單的接口允許數(shù)據(jù)從客戶端傳遞到服務(wù)端,但并不會(huì)打斷用戶當(dāng)前的操作。使用XMLHttpRequest傳送的數(shù)據(jù)可以是任何格式,雖然從名字上建議是XML格式的數(shù)據(jù)。

    開發(fā)人員應(yīng)該已經(jīng)熟悉了許多其他XML相關(guān)的技術(shù)。XPath可以訪問XML文檔中的數(shù)據(jù),但理解XML DOM是必須的。類似的,XSLT是最簡單而快速的從XML數(shù)據(jù)生成HTML或XML的方式。許多開發(fā)人員已經(jīng)熟悉Xpath和XSLT,因此AJAX選擇XML作為數(shù)據(jù)交換格式有意義的。XSLT可以被用在客戶端和服務(wù)端,他能夠減少大量的用JavaScript編寫的應(yīng)用邏輯。

    3、CSS

    為了正確的瀏覽AJAX應(yīng)用,CSS是一種AJAX開發(fā)人員所需要的重要武器。CSS提供了從內(nèi)容中分離應(yīng)用樣式和設(shè)計(jì)的機(jī)制。雖然CSS在AJAX應(yīng)用中扮演至關(guān)重要的角色,但他也是構(gòu)建創(chuàng)建跨瀏覽器應(yīng)用的一大阻礙,因?yàn)椴煌臑g覽器廠商支持各種不同的CSS級(jí)別。

    五、服務(wù)器端

    但不像在客戶端,在服務(wù)端AJAX應(yīng)用還是使用建立在如Java,.Net和PHP語言基礎(chǔ)上機(jī)制;并沒有改變這個(gè)領(lǐng)域中的主要方式。

    既然如此,我們對(duì)Ruby on Rails框架的興趣也就迅速增加了。在一年多前,Ruby on Rails已經(jīng)吸引了大量開發(fā)人員基于其強(qiáng)大功能來構(gòu)建Web和AJAX應(yīng)用。雖然目前還有很多快速應(yīng)用開發(fā)工具存在,Ruby on Rails看起來已經(jīng)儲(chǔ)備了簡化構(gòu)建AJAX應(yīng)用的能力。

    六、開發(fā)工具

    在實(shí)際構(gòu)建AJAX應(yīng)用中,你需要的不只是文本編輯器。既然是JavaScript非編譯的,他可以容易地編寫和運(yùn)行在瀏覽器中;然而,許多工具提供了有用的擴(kuò)展如語法高亮和智能完成。

    不同的IDE提供了對(duì)JavaScript支持的不同等級(jí)。來自JetBrains的IntelliJ IDEA是一個(gè)用來JavaScript開發(fā)的更好的IDE,雖然許多開發(fā)人員也喜歡Microsoft’s Visual Studio產(chǎn)品(允諾會(huì)在最新的版本中改善對(duì)AJAX的支持)。Eclipse包含了兩個(gè)免費(fèi)的JavaScript編輯器插件和一個(gè)商業(yè)的來自ActiveStat的Komodo IDE。

    另一個(gè)JavaScript和AJAX開發(fā)中的問題是調(diào)試?yán)щy。不同的瀏覽器提供不同的通常是隱藏的運(yùn)行時(shí)錯(cuò)誤信息,而JavaScript的缺陷如雙重變量賦值(通常是由于缺少數(shù)據(jù)類型)使得調(diào)試更加困難。在AJAX的開發(fā)中,調(diào)試就更復(fù)雜了,因?yàn)槠湫枰獦?biāo)識(shí)究竟是客戶端還是服務(wù)端產(chǎn)生的錯(cuò)誤。在過去,JavaScript調(diào)試的方法是刪除所有代碼然后一行行的增加直到錯(cuò)誤出現(xiàn)?,F(xiàn)在,更多開發(fā)人員回到為IE準(zhǔn)備的Microsoft Script Debugger和為Mozilla瀏覽器準(zhǔn)備的Venkman。


    七、瀏覽器兼容性

    JavaScript編程的最大問題來自不同的瀏覽器對(duì)各種技術(shù)和標(biāo)準(zhǔn)的支持。構(gòu)建一個(gè)運(yùn)行在不同瀏覽器(如IE和火狐)是一個(gè)困難的任務(wù)。因此幾種AJAX JavaScript框架或者生成基于服務(wù)端邏輯或標(biāo)記庫的JavaScript,或者提供符合跨瀏覽器AJAX開發(fā)的客戶端JavaScript庫。一些流行的框架包括:AJAX.Net, Backbase, Bitkraft, Django, DOJO, DWR, MochiKit, Prototype, Rico, Sajax, Sarissa, and Script.aculo.us.

    這些框架給開發(fā)人員更多的空間使得他們不需要擔(dān)心跨瀏覽器的問題。雖然這些框架提升了開發(fā)人員構(gòu)建應(yīng)用的能力,但由于廠商已經(jīng)開發(fā)了更細(xì)節(jié)的用戶界面的打包組件解決方案,因此在AJAX組件市場中需要考慮一些其他因素。例如提供通用用戶界面的組件如組合框和數(shù)據(jù)柵格的幾個(gè)廠商,都可以被用來在應(yīng)用中創(chuàng)建良好的通過類似電子數(shù)據(jù)表方式來查看和編輯數(shù)據(jù)的體驗(yàn)。但這些組件不僅是封裝了組件的用戶界面而且包括與服務(wù)端數(shù)據(jù)的通訊方式,這些組件通常使用基于標(biāo)記方式來實(shí)現(xiàn)如ASP.Net或JSF控件。


    八、展望

    最近IE和火狐之間的瀏覽器之爭變得火熱起來,因此AJAX開發(fā)人員需要足夠敏捷的作出反應(yīng)。關(guān)鍵點(diǎn)在一些問題如CSS或XML,雖然各種瀏覽器形成采用最新標(biāo)準(zhǔn)的不同陣營(如Mozilla擁抱SVG和E4X標(biāo)準(zhǔn)及在最新火狐BETA版本中使用XUL,而微軟使用自己的XAML技術(shù))。所有這些技術(shù)代表當(dāng)前AJAX主流JavaScript和XML的市場方向改變。

    總的來說,AJAX開發(fā)人員必須盡快地跟進(jìn)最新的技術(shù)并利用高產(chǎn)的工具集。成功的AJAX開發(fā)人員還需要留心他們的使用者以避免將任何問題擴(kuò)大化。并且AJAX開發(fā)人員還需要持續(xù)地創(chuàng)新來創(chuàng)建增強(qiáng)Web應(yīng)用易用性的新方法。

    posted @ 2007-05-02 10:15 jadmin 閱讀(98) | 評(píng)論 (0)編輯 收藏

    Ajax: DWR方式

    按照與文章評(píng)價(jià)系統(tǒng)相同的流程,我們將使用Direct Web Remoting(DWR)框架實(shí)現(xiàn)同樣的功能。

    假定文章和投票結(jié)果存儲(chǔ)在一個(gè)數(shù)據(jù)庫中,使用某種對(duì)象/關(guān)系映射技術(shù)來完成抽取工作。為了部署起來盡可能地簡單,我們不會(huì)使用數(shù)據(jù)庫進(jìn)行持久性存儲(chǔ)。此外,為使應(yīng)用程序盡可能通用,也不使用Web框架。相反,應(yīng)用程序?qū)囊粋€(gè)靜態(tài)HTML文件開始,可以認(rèn)為它由服務(wù)器動(dòng)態(tài)地呈現(xiàn)。除了這些簡化措施,應(yīng)用程序還應(yīng)該使用Spring Framework關(guān)聯(lián)一切,以便輕松看出如何在一個(gè)“真實(shí)的”應(yīng)用程序中使用DWR。

    現(xiàn)在應(yīng)該下載示例應(yīng)用程序并熟悉它。該應(yīng)用程序被壓縮為標(biāo)準(zhǔn)的WAR文件,因此您可以把它放置到任何一個(gè)Web容器中——無需進(jìn)行配置。部署完畢之后,就可以導(dǎo)航到http://localhost:7001/ajax_demo/dwr-ajax.html來運(yùn)行程序。

    可以查看HTML源代碼,了解它如何工作。給人印象最深的是,代碼如此簡單——所有與服務(wù)器的交互都隱藏在JavaScript對(duì)象ajaxSampleSvc的后面。更加令人驚訝的是,ajaxSampleSvc服務(wù)不是由手工編寫而是完全自動(dòng)生成的!讓我們繼續(xù),看看這是如何做到的。

    引入DWR

    如同在“原始的Ajax”一節(jié)所演示的那樣,直接使用XmlHttpRequest創(chuàng)建異步請(qǐng)求非常麻煩。不僅JavaScript代碼冗長,而且必須考慮服務(wù)器端為定位Ajax請(qǐng)求到適當(dāng)?shù)姆?wù)所需做的工作,并將結(jié)果封送到瀏覽器。

    設(shè)計(jì)DWR的目的是要處理將Web頁面安裝到后端服務(wù)上所需的所有信息管道。它是一個(gè)Java框架,可以很輕松地將它插入到Web應(yīng)用程序中,以便JavaScript代碼可以調(diào)用服務(wù)器上的服務(wù)。它甚至直接與Spring Framework集成,從而允許用戶直接向Web客戶機(jī)公開bean。

    DWR真正的巧妙之處是,在用戶配置了要向客戶機(jī)公開的服務(wù)之后,它使用反射來生成JavaScript對(duì)象,以便Web頁面能夠使用這些對(duì)象來訪問該服務(wù)。然后Web頁面只需接合到生成的JavaScript對(duì)象,就像它們是直接使用服務(wù)一樣;DWR無縫地處理所有有關(guān)Ajax和請(qǐng)求定位的瑣碎細(xì)節(jié)。

    讓我們仔細(xì)分析一下示例代碼,弄清它是如何工作的。

    應(yīng)用程序細(xì)節(jié):DWR分析

    關(guān)于應(yīng)用程序,首先要注意的是,它是一個(gè)標(biāo)準(zhǔn)的Java應(yīng)用程序,使用分層架構(gòu)(Layered Architecture)設(shè)計(jì)模式。使用DWR通過JavaScript公開一些服務(wù)并不影響您的設(shè)計(jì)。

    下面是一個(gè)簡單的Java服務(wù),我們將使用DWR框架直接將其向JavaScript代碼公開:

    package com.tearesolutions.service;
    
    public interface AjaxSampleSvc { 
    ??? Article castVote(int rank);
    }
    

    這是一個(gè)被簡化到幾乎不可能的程度的例子,其中只有一篇文章可以投票。該服務(wù)由Spring管理,它使用的bean名是ajaxSampleSvc,它的持久性需求則依賴于ArticleDao。詳情請(qǐng)參見applicationContext.xml。

    為了把該服務(wù)公開為JavaScript對(duì)象,需要配置DWR,添加dwr.xml文件到WEB-INF目錄下:

    dwr.xml文件告訴DWR哪些服務(wù)是要直接向JavaScript代碼公開的。注意,已經(jīng)要求公開Spring bean ajaxSampleSvc。DWR將自動(dòng)找到由應(yīng)用程序設(shè)置的SpringApplicationContext。為此,必須使用標(biāo)準(zhǔn)的servlet過濾器ContextLoaderListener來初始化Spring ApplicationContext。

    DWR被設(shè)置為一個(gè)servlet,所以把它的定義添加到web.xml:

     Ajax Examples
    
    ??????? org.springframework.web.context.ContextLoaderListener
    ???
    ??ajax_sample
    ??com.tearesolutions.web.AjaxSampleServlet
    ??1
    
    ??dwr-invoker
    ??DWR Servlet
    ??Direct Web Remoter Servlet
    ??uk.ltd.getahead.dwr.DWRServlet
    ??
    ???debug
    ???true
    ???
    ??ajax_sample
    ??/ajax_sample
    ??
    ??dwr-invoker
    ??/dwr/*
    

    做完這些之后,可以加載http://localhost:7001/ajax-demo/dwr,看看哪些服務(wù)可用。結(jié)果如下:

    圖3. 可用的服務(wù)

    單擊ajaxSampleSvc鏈接,查看有關(guān)如何在HTML頁面內(nèi)直接使用服務(wù)的示例實(shí)現(xiàn)。其中包含的兩個(gè)JavaScript文件完成了大部分的功能:
    
    

    ajaxSampleSvc.js是動(dòng)態(tài)生成的:

    function ajaxSampleSvc() { }
    
    ajaxSampleSvc.castVote = function(callback, p0)
    { 
    ??? DWREngine._execute(callback, '/ajax-demo/dwr', 
     'ajaxSampleSvc', 'castVote', p0);
    }
    

    現(xiàn)在可以使用JavaScript對(duì)象ajaxSampleSvc替換所有的XmlHttpRequest代碼,從而重構(gòu)raw-ajax.html文件??梢栽赿wr-ajax.html文件中看到改動(dòng)的結(jié)果;下面是新的JavaScript函數(shù):

    function castVote(rank) {
    ??? ajaxSampleSvc.castVote(processResponse, rank);
    }
    function processResponse(data) {
     var voteText = "

    Thanks for Voting!

    " ????? + "

    Current ranking: " + data.voteAverage ????? + " out of 5

    " ????? + "

    Number of votes placed: " ????? + data.numberOfVotes + "

    "; 502 502'votes').innerHTML = voteText;???????? }

    驚人地簡單,不是嗎?由ajaxSampleSvc對(duì)象返回的Article域?qū)ο笮蛄谢癁橐粋€(gè)JavaScript對(duì)象,允許在它上面調(diào)用諸如numberOfVotes()和voteAverage()之類的方法。在動(dòng)態(tài)生成并插入到DIV元素“votes”中的HTML代碼內(nèi)使用這些數(shù)據(jù)。

    下一步工作

    在后續(xù)文章中,我將繼續(xù)有關(guān)Ajax的話題,涉及下面這些方面:

    posted @ 2007-05-02 10:13 jadmin 閱讀(97) | 評(píng)論 (0)編輯 收藏

    作為J2EE開發(fā)人員,我們似乎經(jīng)常關(guān)注“后端機(jī)制(backend mechanics)”。我們通常會(huì)忘記,J2EE的主要成功之處在Web應(yīng)用程序方面;許多原因使得人們喜歡利用Web開發(fā)應(yīng)用程序,但主要還是因?yàn)槠湟子诓渴鸬奶攸c(diǎn)允許站點(diǎn)以盡可能低的成本擁有上百萬的用戶。遺憾的是,在過去幾年中,我們?cè)诤蠖送度肓颂嗟臅r(shí)間,而在使我們的Web用戶界面對(duì)用戶自然和響應(yīng)靈敏方面卻投入不足。

    本文介紹一種方法,Ajax,使用它可以構(gòu)建更為動(dòng)態(tài)和響應(yīng)更靈敏的Web應(yīng)用程序。該方法的關(guān)鍵在于對(duì)瀏覽器端的JavaScript、DHTML和與服務(wù)器異步通信的組合。本文也演示了啟用這種方法是多么簡單:利用一個(gè)Ajax框架(指DWR)構(gòu)造一個(gè)應(yīng)用程序,它直接從瀏覽器與后端服務(wù)進(jìn)行通信。如果使用得當(dāng),這種強(qiáng)大的力量可以使應(yīng)用程序更加自然和響應(yīng)靈敏,從而提升用戶的瀏覽體驗(yàn)。

    該應(yīng)用程序中所使用的示例代碼已打包為單獨(dú)的WAR文件,可供下載。

    簡介

    術(shù)語Ajax用來描述一組技術(shù),它使瀏覽器可以為用戶提供更為自然的瀏覽體驗(yàn)。在Ajax之前,Web站點(diǎn)強(qiáng)制用戶進(jìn)入提交/等待/重新顯示范例,用戶的動(dòng)作總是與服務(wù)器的“思考時(shí)間”同步。Ajax提供與服務(wù)器異步通信的能力,從而使用戶從請(qǐng)求/響應(yīng)的循環(huán)中解脫出來。借助于Ajax,可以在用戶單擊按鈕時(shí),使用JavaScript和DHTML立即更新UI,并向服務(wù)器發(fā)出異步請(qǐng)求,以執(zhí)行更新或查詢數(shù)據(jù)庫。當(dāng)請(qǐng)求返回時(shí),就可以使用JavaScript和CSS來相應(yīng)地更新UI,而不是刷新整個(gè)頁面。最重要的是,用戶甚至不知道瀏覽器正在與服務(wù)器通信:Web站點(diǎn)看起來是即時(shí)響應(yīng)的。

    雖然Ajax所需的基礎(chǔ)架構(gòu)已經(jīng)出現(xiàn)了一段時(shí)間,但直到最近異步請(qǐng)求的真正威力才得到利用。能夠擁有一個(gè)響應(yīng)極其靈敏的Web站點(diǎn)確實(shí)激動(dòng)人心,因?yàn)樗罱K允許開發(fā)人員和設(shè)計(jì)人員使用標(biāo)準(zhǔn)的HTML/CSS/JavaScript堆棧創(chuàng)建“桌面風(fēng)格的(desktop-like)”可用性。

    通常,在J2EE中,開發(fā)人員過于關(guān)注服務(wù)和持久性層的開發(fā),以至于用戶界面的可用性已經(jīng)落后。在一個(gè)典型的J2EE開發(fā)周期中,常常會(huì)聽到這樣的話,“我們沒有可投入U(xiǎn)I的時(shí)間”或“不能用HTML實(shí)現(xiàn)”。但是,以下Web站點(diǎn)證明,這些理由再也站不住腳了:

    posted @ 2007-05-02 10:07 jadmin 閱讀(89) | 評(píng)論 (0)編輯 收藏

    > Windows環(huán)境
    安裝好JDK后,開始設(shè)置Java的環(huán)境變量:
    PS:本人的JDK的版本是jdk1.5.0_05,WinXP系統(tǒng)
    對(duì)于WinXP或Win2000:
    用鼠標(biāo)右擊“我的電腦”->屬性->高級(jí)->環(huán)境變量
    系統(tǒng)變量->新建->變量名:JAVA_HOME 變量值:C:\Program Files\Java\jdk1.5.0_05
    系統(tǒng)變量->編輯->變量名:Path 在變量值的最前面加上:%JAVA_HOME%\bin;(若已經(jīng)有Path項(xiàng),無須另外新建,直接在后

    面加,但需用;與前面已有的項(xiàng)分隔開)
    系統(tǒng)變量->新建->變量名:CLASSPATH 變量值:
    .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

    若為做MSSQL數(shù)據(jù)庫開發(fā)而安裝了Microsoft SQL Server 2000 Driver for JDBC的話,
    還需將msutil.jar,mssqlserver.jar,msbase.jar 3個(gè)文件加到CLASSPATH里

    若裝了Ant工具,還需新建一個(gè)ANT_HOME項(xiàng) 變量值為相應(yīng)目錄,
    我的Ant安裝目錄為E:\Program Files\apache-ant-1.7.0
    并且將%Ant_HOME%\bin加入Path項(xiàng)

    以下是我的Java環(huán)境變量設(shè)置

    JAVA_HOME
    C:\Program Files\Java\jdk1.5.0_05

    Path
    C:\Windows;C:\Windows\Command;
    C:\Program Files\Java\jdk1.5.0_05\bin;
    %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
    C:\Program Files\MySQL\MySQL Server 5.2\bin;
    C:\Program Files\Microsoft SQL Server\80\Tools\BINN;
    E:\Program Files\apache-ant-1.7.0\bin

    CLASSPATH
    .;
    C:\Program Files\Java\jdk1.5.0_05\lib;
    C:\Program Files\Java\jdk1.5.0_05\lib\dt.jar;
    C:\Program Files\Java\jdk1.5.0_05\lib\tools.jar;
    C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;
    C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;
    C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar

    ?

    > Linux環(huán)境 (Red Hat 9.0)

    1.從java.cun.com下載jdk-6u7-linux-i586.bin

    2.ftp上傳jdk到linux的root目錄下

    3.進(jìn)入root目錄,先后執(zhí)行命令

    chmod 755 jdk-6u18-linux-i586-rpm.bin

    ./jdk-6u18-linux-i586-rpm.bin

    一路按提示下去就會(huì)安裝成功

    4.設(shè)置環(huán)境變量,jdk6u7以后的不要要設(shè)置環(huán)境變量的


    > 最后測試下環(huán)境變量是否設(shè)置成功
    Win+R組合鍵
    cmd回車
    輸入javac
    如果出現(xiàn)如下信息

    用法:javac <選項(xiàng)> <源文件>
    其中,可能的選項(xiàng)包括:
    -g?????????????????????????? 生成所有調(diào)試信息
    -g:none????????????????????? 不生成任何調(diào)試信息
    -g:{lines,vars,source}?????? 只生成某些調(diào)試信息
    -nowarn????????????????????? 不生成任何警告
    -verbose???????????????????? 輸出有關(guān)編譯器正在執(zhí)行的操作的消息
    -deprecation???????????????? 輸出使用已過時(shí)的 API 的源位置
    -classpath <路徑>????????????? 指定查找用戶類文件的位置
    -cp <路徑>???????????????????? 指定查找用戶類文件的位置
    -sourcepath <路徑>???????????? 指定查找輸入源文件的位置
    -bootclasspath <路徑>????????? 覆蓋引導(dǎo)類文件的位置
    -extdirs <目錄>??????????????? 覆蓋安裝的擴(kuò)展目錄的位置
    -endorseddirs <目錄>?????????? 覆蓋簽名的標(biāo)準(zhǔn)路徑的位置
    -d <目錄>????????????????????? 指定存放生成的類文件的位置
    -encoding <編碼>?????????????? 指定源文件使用的字符編碼
    -source <版本>???????????????? 提供與指定版本的源兼容性
    -target <版本>???????????????? 生成特定 VM 版本的類文件
    -version???????????????????? 版本信息
    -help??????????????????????? 輸出標(biāo)準(zhǔn)選項(xiàng)的提要
    -X?????????????????????????? 輸出非標(biāo)準(zhǔn)選項(xiàng)的提要
    -J<標(biāo)志>?????????????????????? 直接將 <標(biāo)志> 傳遞給運(yùn)行時(shí)系統(tǒng)

    恭喜,你的Java環(huán)境變量配置成功!

    若出現(xiàn)

    'javac' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序
    或批處理文件。

    說明此次Java環(huán)境變量配置出錯(cuò)了,仔細(xì)檢查下吧!

    posted @ 2007-05-01 04:30 jadmin 閱讀(48) | 評(píng)論 (0)編輯 收藏

    使用Google-FireFox比較IE瀏覽器好的理由:

    更強(qiáng)大:
    FireFox內(nèi)部集成了廣告攔截、快速下載、分頁瀏覽、英漢字典、RSS即時(shí)新聞、Google合一的搜索等功能,是目前功能最為強(qiáng)大的瀏覽器!
    更快速:
    Google使用了一項(xiàng)緩存技術(shù)(caching and cookie-ing technology)對(duì)Firefox進(jìn)行了專門的優(yōu)化,當(dāng)用戶使用Firefox瀏覽器在Google搜索時(shí),搜索速度將大大加快。用官方的話來說就 是即點(diǎn)即現(xiàn)。 同時(shí)IE占用內(nèi)存太大,而firefox確只占其四分之一不到。
    更干凈:
    只到目前為止,F(xiàn)ireFox還沒有多如牛毛的企業(yè)插件(你使用“上網(wǎng)助手”查一下,隨便一臺(tái)機(jī)器,都有幾十個(gè)流氓插件,讓你的瀏覽器越來越慢)。
    更安全:
    相對(duì)于受到黑客萬眾注目又漏洞百出的IE來講,F(xiàn)irefox的安全性能要好得多。同時(shí),我們都痛恨商業(yè)壟斷和黑幕,F(xiàn)ireFox是開放源代碼、不依賴于商業(yè)基金的軟件系統(tǒng),正在挑戰(zhàn)微軟在瀏覽器行業(yè)的霸主地位 …

    Google-Firefox的超酷使用秘笈:

    標(biāo)簽式(卡片式)瀏覽:
    標(biāo)簽式瀏覽可以極大地節(jié)省您的時(shí)間。 在Firefox的“工具”菜單中選“選項(xiàng)”,然后點(diǎn)擊頂部的“標(biāo)簽式瀏覽”,按鈕,在下面的選單的第一組中選中“在最近打開的窗口中新建標(biāo)簽頁”;選中第二組的“新建標(biāo)簽頁”。

    自動(dòng)填表:
    Firefox可以記住您輸入的表單內(nèi)容,使您在下次登錄時(shí)不需要再填寫表格,超級(jí)方便!當(dāng)然,如果您的電腦還有別人也要使用,而你不想讓他們知道你的秘密的話,你可以選擇那些表單讓Firefox自動(dòng)填寫。

    即時(shí)鼠標(biāo)式英漢字典:
    Google-Firefox默認(rèn)安裝后“字詞翻譯器”和“拼寫檢查器”都已經(jīng)啟用!若需要更改選項(xiàng)請(qǐng)點(diǎn)擊Google工具欄的“選項(xiàng)”按鈕。

    快速查找:
    按熱鍵“Ctrl-F”,F(xiàn)irefox的左下角會(huì)出現(xiàn)查找欄,在您輸入要查找的詞匯的同時(shí),F(xiàn)irefox就會(huì)自動(dòng)定位到頁面中相應(yīng)的位置!不需要像IE那樣再點(diǎn)“確定”獲重新按Ctrl-F才能“下一個(gè)”!

    阻止彈出式廣告窗口:
    和惱人的彈出式廣告說再見吧! Firefox 可以有效阻止未經(jīng)許可的彈出窗口。
    另外,只到目前為止,F(xiàn)irefox還沒有多如牛毛的企業(yè)插件(你使用“上網(wǎng)助手”查一下,隨便一臺(tái)機(jī)器,都有幾十個(gè)流氓插件,讓你的瀏覽器越來越慢)。


    保護(hù)您的隱私:
    Firefox 關(guān)心您的隱私及安全,不加載有害的 ActiveX 控件,不讓惡意的間諜程序入侵您的計(jì)算機(jī)。多種保護(hù)隱私的工具,讓您能掌控自己在網(wǎng)絡(luò)上的一舉一動(dòng)。
    書簽分組,同時(shí)打開:
    您可以將眾多的書簽分組(分成不同的“文件夾”),再打開時(shí)可以一次全部打開;在標(biāo)簽上點(diǎn)擊鼠標(biāo)右鍵,可以同時(shí)刷新本組所有標(biāo)簽,也可以關(guān)閉其他所有標(biāo)簽而僅留下當(dāng)前的頁面。
    快速搜索:
    Google使用了一項(xiàng)緩存技術(shù)(caching and cookie-ing technology)對(duì)Firefox進(jìn)行了專門的優(yōu)化,當(dāng)用戶使用Firefox瀏覽器在Google搜索時(shí),搜索速度將大大加快。用官方的話來說就是即點(diǎn)即現(xiàn),不需要你的任何干預(yù)!

    開發(fā)者最好的朋友:
    Firefox 擁有一組開發(fā)者使用的工具,包括強(qiáng)大的 JavaScript/CSS 控制臺(tái)、文件查看器等,提供您洞察網(wǎng)頁運(yùn)作詳情的能力。

    不用猶豫了!立即下載安裝,開始嶄新的上網(wǎng)體驗(yàn)吧!

    心情故事:細(xì)微之處見真章
    Firefox給我一種非常“平實(shí)而平滑”的感覺,例如,鼠標(biāo)右鍵的彈出式菜單,就那么象大理石的紋理一樣讓我感到舒服。
    如果輸入一個(gè)網(wǎng)址以后,你想修改它,在網(wǎng)址上點(diǎn)鼠標(biāo)左鍵,點(diǎn)一下,全部選中,你可以重新輸入;再點(diǎn)二下,選中指針?biāo)诘膯卧~(正好是我要改的,而后面的html后綴名沒有選中),好像能猜到我的心思一樣!
    拖動(dòng)鼠標(biāo),選中一段文字,復(fù)制到Word里,你會(huì)驚奇的發(fā)現(xiàn),每段的末尾,沒有了IE是的尾巴——一個(gè)多余的空格!
    對(duì)于有N個(gè)郵箱、N個(gè)帳號(hào)的我來說,F(xiàn)irefox考慮的密碼記憶功能真是周到!還可以有一個(gè)“主密碼”來保護(hù)你的秘密!
    我最喜歡的“查找”功能。。。不多說了,一個(gè)字:爽!
    當(dāng)然,學(xué)英語,查外文資料,離不了的“詞霸”,現(xiàn)在不用了!Firefox自帶英漢詞典!


    Firefox超速絕密方法:

    首先,在URL欄輸入“about:config”, 將打開一個(gè)參數(shù)的命令行清單,這就是我們以下進(jìn)行編輯的第一步。

    第二步,在下面的清單中找到“network.http.pipelining” 然后雙擊“network.http.pipelining”將其值改成“true”

    下面我們要做的就是找到“network.http.pipelining.maxrequests”并把它的值改的高一些,如果你改成30,意思就是要求它每次發(fā)送30個(gè)請(qǐng)求。

    最后一步就是在Firefox任何一個(gè)地方點(diǎn)右鍵,選擇“新建”—“整數(shù)”在彈出的對(duì)話框中輸入“nglayout.initialpaint.delay”并將其值改為“0”,表示當(dāng)瀏覽器收到網(wǎng)站回復(fù)的信息后能夠快速的反應(yīng)。

    完全關(guān)閉FireFox后退出,再重新打開FireFox,你將會(huì)有不一樣的速度體驗(yàn),會(huì)有2—3倍的速度提升,有興趣的朋友可以實(shí)驗(yàn)一下。
    參考資料:http://book.366t.com/Article/Catalog2/286.html

    posted @ 2007-05-01 01:18 jadmin 閱讀(63) | 評(píng)論 (0)編輯 收藏
    ??<body>
      <div id="header">
      <h1>Header</h1>
      </div>
      <div id="left">
      軟件音速--左
      </div>
      <div id="right">
      軟件音速---右
      </div>
      <div id="middle">
      軟件音速---中間  

    ?????????? </div>
      <div id="footer">
      軟件音速--頁腳
      </div>
      </body>

      下面是CSS代碼

      body {
      margin: 0px;
      padding: 0px;
      }
      div#header {
      clear: both;
      height: 50px;
      background-color: aqua;
      padding: 1px;
      }
      div#left {
      float: left;
      width: 150px;
      background-color: red;
      }
      div#right {
      float: right;
      width: 150px;
      background-color: green;
      }
      div#middle {
      padding: 0px 160px 5px 160px;
      margin: 0px;
      background-color: silver;
      }
      div#footer {
      clear: both;
      background-color: yellow;
      }

    posted @ 2007-04-30 14:39 jadmin 閱讀(55) | 評(píng)論 (0)編輯 收藏

    你的Winxp是不是原版,一看就知:
      在i386文件夾里有一個(gè)eula.txt,最后有一行EULAID,就是你的版本
      OEM:WX.2_PRO_OEM_TW(or.WX.2_PRE_OEM_TW)
      EVAL:WX.2_PRO_RVL_TW(or.WX.2_PRE_RAL_TW)
      RTL.:WX.4_PRO_RTL_TW
      中文正式版的版本是
      EULAID:WX.4_PRO_RTL_CN

      1.如果是WX.開頭是正式版,WB.開頭是測試版。

      2.如果有_PRE,是家庭版,_PRO是專業(yè)版。

      3._OEM,_RVL都是需要啟動(dòng)版,_RTL有免啟動(dòng)金鑰,就可免啟動(dòng)。

      4.光碟標(biāo)簽并無意義,是制作光盤的人自己加加進(jìn)去的。

      5.OEM.版的說明,中文版應(yīng)是一半中文一半英文,如果全是英文,那就是來自英文的Corporate版(破解)

      6.EVAL(RVL)版的說明全是中文。

      忘記的補(bǔ)充
      1、winxp原版的文件都是2001-9-5 12:00,如果有一個(gè)不是,那么!特別是i386\eula.txt這個(gè)文件。
      2、CD.Label是WXPFPP_EN(英文),WXPFPP.cn(中文)
      3、還有其它一堆.OEM免激活、免激活正式版等等的,這些都是.利用.OEM、2600Fre.這些版本+Corpfiles.破解,再燒成可開機(jī)光盤的,看它們的CD.Label更是五花八門。
      4、目前看到免激活版都是某中文版+英文Corpfiles.做成免激活「Home.Made」企業(yè)版(或稱大量授權(quán)版本),看安裝序號(hào)便知:FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8。所以如果你有OEM+Corpfiles.版或是RVL@TW版的話,那就不用急著下載其它版本,看看就好。

     ?。ㄎ艺J(rèn)為)不管你用RVL@TW.or.OEM+Corpfiles.or.阿貓阿狗免激活可光盤開機(jī)版,用起來都一樣好用,前提是作者的功力不是太差,沒有亂破解一通。除非你是完美主義者,不然我不認(rèn)為用起來會(huì)和正式版有什么差別。當(dāng)然,先不論微軟會(huì)不會(huì)?;ㄕ衼韺?duì)付這些海盜的可能性。

    ??????? 轉(zhuǎn)自:http://hi.baidu.com/deletememory/blog/item/20db56d96db0642d11df9b0b.html

    posted @ 2007-04-30 14:36 jadmin 閱讀(77) | 評(píng)論 (0)編輯 收藏
    在ant 文件中應(yīng)該包括:

    property??????? 設(shè)置屬性(name/value)

    mkdir???????????? 創(chuàng)建目錄

    copy????????????? 拷貝文件或文件夾

    delete?????????? 刪除文件或文件夾

    javac??????????? 編譯.java 文件

    war????????????? 為 web appliaction 打包

    <project name="finance" basedir="." default="build.war">

    name:工程名, basedir:指定工程的路徑,如果填寫的是.就表示默認(rèn)的路徑 default:表示默認(rèn)的target

    Ant的概念
    可能有些讀者并不連接什么是Ant以及入可使用它,但只要使用通過Linux系統(tǒng)得讀者,應(yīng)該知道

    make這個(gè)命令。當(dāng)編譯Linux內(nèi)核及一些軟件的源程序時(shí),經(jīng)常要用這個(gè)命令。Make命令其實(shí)就

    是一個(gè)項(xiàng)目管理工具,而Ant所實(shí)現(xiàn)功能與此類似。像make,gnumake和nmake這些編譯工具都有

    一定的缺陷,但是Ant卻克服了這些工具的缺陷。最初Ant開發(fā)者在開發(fā)跨平臺(tái)的應(yīng)用時(shí),用樣也

    是基于這些缺陷對(duì)Ant做了更好的設(shè)計(jì)。

    Ant 與 makefile
    Makefile有一些不足之處,比如很多人都會(huì)碰到的煩人的Tab問題。最初的Ant開發(fā)者多次強(qiáng)調(diào)”

    只是我在Tab前面加了一個(gè)空格,所以我的命令就不能執(zhí)行”。有一些工具在一定程度上解決了

    這個(gè)問題,但還是有很多其他的問題。Ant則與一般基于命令的工具有所不同,它是Java類的擴(kuò)

    展。Ant運(yùn)行需要的XML格式的文件不是Shell命令文件。它是由一個(gè)Project組成的,而一個(gè)

    Project又可分成可多target,target再細(xì)分又分成很多task,每一個(gè)task都是通過一個(gè)實(shí)現(xiàn)特

    定接口的java類來完成的。

    Ant的優(yōu)點(diǎn)

    Ant是Apache軟件基金會(huì)JAKARTA目錄中的一個(gè)子項(xiàng)目,它有以下的優(yōu)點(diǎn)。
    跨平臺(tái)性。Ant是存Java語言編寫的,所示具有很好的跨平臺(tái)性。
    操作簡單。Ant是由一個(gè)內(nèi)置任務(wù)和可選任務(wù)組成的。Ant運(yùn)行時(shí)需要一個(gè)XML文件(構(gòu)建文件)。

    Ant通過調(diào)用target樹,就可以執(zhí)行各種task。每個(gè)task實(shí)現(xiàn)了特定接口對(duì)象。由于Ant構(gòu)建文件

    時(shí)XML格式的文件,所以和容易維護(hù)和書寫,而且結(jié)構(gòu)很清晰。
    Ant可以集成到開發(fā)環(huán)境中。由于Ant的跨平臺(tái)性和操作簡單的特點(diǎn),它很容易集成到一些開發(fā)環(huán)

    境中去。

    Ant 開發(fā)

    Ant的構(gòu)建文件
    當(dāng)開始一個(gè)新的項(xiàng)目時(shí),首先應(yīng)該編寫Ant構(gòu)建文件。構(gòu)建文件定義了構(gòu)建過程,并被團(tuán)隊(duì)開發(fā)

    中每個(gè)人使用。Ant構(gòu)建文件默認(rèn)命名為build.xml,也可以取其他的名字。只不過在運(yùn)行的時(shí)候

    把這個(gè)命名當(dāng)作參數(shù)傳給Ant。構(gòu)建文件可以放在任何的位置。一般做法是放在項(xiàng)目頂層目錄中

    ,這樣可以保持項(xiàng)目的簡潔和清晰。下面是一個(gè)典型的項(xiàng)目層次結(jié)構(gòu)。
    (1) src存放文件。
    (2) class存放編譯后的文件。
    (3) lib存放第三方JAR包。
    (4) dist存放打包,發(fā)布以后的代碼。
    Ant構(gòu)建文件是XML文件。每個(gè)構(gòu)建文件定義一個(gè)唯一的項(xiàng)目(Project元素)。每個(gè)項(xiàng)目下可以定

    義很多目標(biāo)(target元素),這些目標(biāo)之間可以有依賴關(guān)系。當(dāng)執(zhí)行這類目標(biāo)時(shí),需要執(zhí)行他們所

    依賴的目標(biāo)。
    每個(gè)目標(biāo)中可以定義多個(gè)任務(wù),目標(biāo)中還定義了所要執(zhí)行的任務(wù)序列。Ant在構(gòu)建目標(biāo)時(shí)必須調(diào)

    用所定義的任務(wù)。任務(wù)定義了Ant實(shí)際執(zhí)行的命令。Ant中的任務(wù)可以為3類。
    (1) 核心任務(wù)。核心任務(wù)是Ant自帶的任務(wù)。
    (2) 可選任務(wù)。可選任務(wù)實(shí)來自第三方的任務(wù),因此需要一個(gè)附加的JAR文件。
    (3) 用戶自定義的任務(wù)。用戶自定義的任務(wù)實(shí)用戶自己開發(fā)的任務(wù)。
    1.<project>標(biāo)簽
    ???? 每個(gè)構(gòu)建文件對(duì)應(yīng)一個(gè)項(xiàng)目。<project>標(biāo)簽時(shí)構(gòu)建文件的根標(biāo)簽。它可以有多個(gè)內(nèi)在屬性,

    就如代碼中所示,其各個(gè)屬性的含義分別如下。
    (1) default表示默認(rèn)的運(yùn)行目標(biāo),這個(gè)屬性是必須的。
    (2) basedir表示項(xiàng)目的基準(zhǔn)目錄。
    (3) name表示項(xiàng)目名。
    (4) description表示項(xiàng)目的描述。
    每個(gè)構(gòu)建文件都對(duì)應(yīng)于一個(gè)項(xiàng)目,但是大型項(xiàng)目經(jīng)常包含大量的子項(xiàng)目,每一個(gè)子項(xiàng)目都可以有

    自己的構(gòu)建文件。

    2.<target>標(biāo)簽
    一個(gè)項(xiàng)目標(biāo)簽下可以有一個(gè)或多個(gè)target標(biāo)簽。一個(gè)target標(biāo)簽可以依賴其他的target標(biāo)簽。例

    如,有一個(gè)target用于編譯程序,另一個(gè)target用于聲稱可執(zhí)行文件。在生成可執(zhí)行文件之前必

    須先編譯該文件,因策可執(zhí)行文件的target依賴于編譯程序的target。Target的所有屬性如下。
    (1).name表示標(biāo)明,這個(gè)屬性是必須的。
    (2).depends表示依賴的目標(biāo)。
    (3)if表示僅當(dāng)屬性設(shè)置時(shí)才執(zhí)行。
    (4)unless表示當(dāng)屬性沒有設(shè)置時(shí)才執(zhí)行。
    (5)description表示項(xiàng)目的描述。
    Ant的depends屬性指定了target的執(zhí)行順序。Ant會(huì)依照depends屬性中target出現(xiàn)順序依次執(zhí)行

    每個(gè)target。在執(zhí)行之前,首先需要執(zhí)行它所依賴的target。程序中的名為run的target的

    depends屬性compile,而名為compile的target的depends屬性是prepare,所以這幾個(gè)target執(zhí)

    行的順序是prepare->compile->run。
    一個(gè)target只能被執(zhí)行一次,即使有多個(gè)target依賴于它。如果沒有if或unless屬性,target總

    會(huì)被執(zhí)行。

    3.<mkdir>標(biāo)簽
    該標(biāo)簽用于創(chuàng)建一個(gè)目錄,它有一個(gè)屬性dir用來指定所創(chuàng)建的目錄名,其代碼如下:
    <mkdir dir=”${class.root}”/>
    通過以上代碼就創(chuàng)建了一個(gè)目錄,這個(gè)目錄已經(jīng)被前面的property標(biāo)簽所指定。

    4<jar>標(biāo)簽
    該標(biāo)簽用來生成一個(gè)JAR文件,其屬性如下。
    (1) destfile表示JAR文件名。
    (2) basedir表示被歸檔的文件名。
    (3) includes表示別歸檔的文件模式。
    (4) exchudes表示被排除的文件模式。

    5.<javac標(biāo)簽>
    該標(biāo)簽用于編譯一個(gè)或一組java文件,其屬性如下。
    (1).srcdir表示源程序的目錄。
    (2).destdir表示class文件的輸出目錄。
    (3).include表示被編譯的文件的模式。
    (4).excludes表示被排除的文件的模式。
    (5).classpath表示所使用的類路徑。
    (6).debug表示包含的調(diào)試信息。
    (7).optimize表示是否使用優(yōu)化。
    (8).verbose 表示提供詳細(xì)的輸出信息。
    (9).fileonerror表示當(dāng)碰到錯(cuò)誤就自動(dòng)停止。

    6.<java>標(biāo)簽
    該標(biāo)簽用來執(zhí)行編譯生成的.class文件,其屬性如下。
    (1).classname 表示將執(zhí)行的類名。
    (2).jar表示包含該類的JAR文件名。
    (3).classpath所表示用到的類路徑。
    (4).fork表示在一個(gè)新的虛擬機(jī)中運(yùn)行該類。
    (5).failonerror表示當(dāng)出現(xiàn)錯(cuò)誤時(shí)自動(dòng)停止。
    (6).output 表示輸出文件。
    (7).append表示追加或者覆蓋默認(rèn)文件。

    7.<delete>標(biāo)簽
    該標(biāo)簽用于刪除一個(gè)文件或一組文件,去屬性如下。
    (1)/file表示要?jiǎng)h除的文件。
    (2).dir表示要?jiǎng)h除的目錄。
    (3).includeEmptyDirs 表示指定是否要?jiǎng)h除空目錄,默認(rèn)值是刪除。
    (4).failonerror 表示指定當(dāng)碰到錯(cuò)誤是否停止,默認(rèn)值是自動(dòng)停止。
    (5).verbose表示指定是否列出所刪除的文件,默認(rèn)值為不列出。

    8.<copy>標(biāo)簽
    該標(biāo)簽用于文件或文件集的拷貝,其屬性如下。
    (1).file 表示源文件。
    (2).tofile 表示目標(biāo)文件。
    (3).todir 表示目標(biāo)目錄。
    (4).overwrite 表示指定是否覆蓋目標(biāo)文件,默認(rèn)值是不覆蓋。
    (5).includeEmptyDirs 表示制定是否拷貝空目錄,默認(rèn)值為拷貝。
    (6).failonerror 表示指定如目標(biāo)沒有發(fā)現(xiàn)是否自動(dòng)停止,默認(rèn)值是停止。
    (7).verbose 表示制定是否顯示詳細(xì)信息,默認(rèn)值不顯示。

    Ant的數(shù)據(jù)類型
    在構(gòu)建文件中為了標(biāo)識(shí)文件或文件組,經(jīng)常需要使用數(shù)據(jù)類型。數(shù)據(jù)類型包含在

    org.apache.tool.ant.types包中。下面鏡簡單介紹構(gòu)建文件中一些常用的數(shù)據(jù)類型。

    1. argument 類型
    由Ant構(gòu)建文件調(diào)用的程序,可以通過<arg>元素向其傳遞命令行參數(shù),如apply,exec和java任

    務(wù)均可接受嵌套<arg>元素,可以為各自的過程調(diào)用指定參數(shù)。以下是<arg>的所有屬性。
    (1).values 是一個(gè)命令參數(shù)。如果參數(shù)種有空格,但又想將它作為單獨(dú)一個(gè)值,則使用此屬性

    。
    (2).file表示一個(gè)參數(shù)的文件名。在構(gòu)建文件中,此文件名相對(duì)于當(dāng)前的工作目錄。
    (3).line表示用空格分隔的多個(gè)參數(shù)列表。
    (4).path表示路徑。

    2.ervironment 類型
    ???? 由Ant構(gòu)建文件調(diào)用的外部命令或程序,<env>元素制定了哪些環(huán)境變量要傳遞給正在執(zhí)行的系

    統(tǒng)命令,<env>元素可以接受以下屬性。
    (1).file表示環(huán)境變量值得文件名。此文件名要被轉(zhuǎn)換位一個(gè)絕對(duì)路徑。
    (2).path表示環(huán)境變量的路徑。Ant會(huì)將它轉(zhuǎn)換為一個(gè)本地約定。
    (3).value 表示環(huán)境變量的一個(gè)直接變量。
    (4).key 表示環(huán)境變量名。
    注意???? file path 或 value只能取一個(gè)。

    3.filelist類型
    Filelist 是一個(gè)支持命名的文件列表的數(shù)據(jù)類型,包含在一個(gè)filelist類型中的文件不一定是

    存在的文件。以下是其所有的屬性。
    (1).dir是用于計(jì)算絕對(duì)文件名的目錄。
    (2).files 是用逗號(hào)分隔的文件名列表。
    (3).refid 是對(duì)某處定義的一個(gè)<filelist>的引用。
    注意???? dir 和 files 都是必要的,除非指定了refid(這種情況下,dir和files都不允許使用)。

    4.fileset類型
    Fileset 數(shù)據(jù)類型定義了一組文件,并通常表示為<fileset>元素。不過,許多ant任務(wù)構(gòu)建成了

    隱式的fileset,這說明他們支持所有的fileset屬性和嵌套元素。以下為fileset 的屬性列表。
    (1).dir表示fileset 的基目錄。
    (2).casesensitive的值如果為false,那么匹配文件名時(shí),fileset不是區(qū)分大小寫的,其默認(rèn)

    值為true.
    (3).defaultexcludes 用來確定是否使用默認(rèn)的排除模式,默認(rèn)為true。
    (4).excludes 是用逗號(hào)分隔的需要派出的文件模式列表。
    (5).excludesfile 表示每行包含一個(gè)排除模式的文件的文件名。
    (6).includes 是用逗號(hào)分隔的,需要包含的文件模式列表。
    (7).includesfile 表示每行包括一個(gè)包含模式的文件名。

    5.patternset 類型
    Fileset 是對(duì)文件的分組,而patternset是對(duì)模式的分組,他們是緊密相關(guān)的概念。

    <patternset>支持4個(gè)屬性:includes excludex includexfile 和 excludesfile,與fileset相

    同。Patternset 還允許以下嵌套元素:include,exclude,includefile 和 excludesfile.

    6.filterset 類型
    Filterset定義了一組過濾器,這些過濾器將在文件移動(dòng)或復(fù)制時(shí)完成文件的文本替換。
    主要屬性如下:
    (1).begintoken 表示嵌套過濾器所搜索的記號(hào),這是標(biāo)識(shí)其開始的字符串。
    (2).endtoken表示嵌套過濾器所搜索的記號(hào)這是標(biāo)識(shí)其結(jié)束的字符串。
    (3).id是過濾器的唯一標(biāo)志符。
    (4).refid是對(duì)構(gòu)建文件中某處定義一個(gè)過濾器的引用。

    7.Path類型
    Path元素用來表示一個(gè)類路徑,不過它還可以用于表示其他的路徑。在用作揖個(gè)屬性時(shí),路經(jīng)中

    的各項(xiàng)用分號(hào)或冒號(hào)隔開。在構(gòu)建的時(shí)候,此分隔符將代替當(dāng)前平臺(tái)中所有的路徑分隔符,其擁

    有的屬性如下。
    (1).location 表示一個(gè)文件或目錄。Ant在內(nèi)部將此擴(kuò)展為一個(gè)絕對(duì)路徑。
    (2).refid 是對(duì)當(dāng)前構(gòu)建文件中某處定義的一個(gè)path的引用。
    (3).path表示一個(gè)文件或路徑名列表。

    8.mapper類型
    Mapper類型定義了一組輸入文件和一組輸出文件間的關(guān)系,其屬性如下。
    (1).classname 表示實(shí)現(xiàn)mapper類的類名。當(dāng)內(nèi)置mapper不滿足要求時(shí),用于創(chuàng)建定制mapper.
    (2).classpath表示查找一個(gè)定制mapper時(shí)所用的類型路徑。
    (3).classpathref是對(duì)某處定義的一個(gè)類路徑的引用。
    (4).from屬性的含義取決于所用的mapper.
    (5).to屬性的含義取決于所用的mapper.
    (6).type屬性的取值為identity,flatten glob merge???? regexp???? 其中之一,它定義了要是用的

    內(nèi)置mapper的類型。


    Ant 的運(yùn)行
    安裝好Ant并且配置好路徑之后,在命令行中切換到構(gòu)建文件的目錄,輸入Ant命令就可以運(yùn)行

    Ant.若沒有指定任何參數(shù),Ant會(huì)在當(dāng)前目錄下查詢build.xml文件。如果找到了就用該文件作為

    構(gòu)建文件。如果使用了 –find 選項(xiàng),Ant 就會(huì)在上級(jí)目錄中找構(gòu)建文件,直至到達(dá)文件系統(tǒng)得

    跟目錄。如果構(gòu)建文件的名字不是build.xml ,則Ant運(yùn)行的時(shí)候就可以使用 –buildfile file

    ,這里file 指定了要使用的構(gòu)建文件的名稱,示例如下:
    Ant
    如下說明了表示當(dāng)前目錄的構(gòu)建文件為build.xml 運(yùn)行 ant 執(zhí)行默認(rèn)的目標(biāo)。

    Ant –buildfile???? test.xml
    使用當(dāng)前目錄下的test.xml 文件運(yùn)行Ant ,執(zhí)行默認(rèn)的目標(biāo)

    posted @ 2007-04-30 10:52 jadmin 閱讀(54) | 評(píng)論 (0)編輯 收藏
    EclipseIDE變得如此熱門,以至于出現(xiàn)在許多工作簡歷中。但是,也正因?yàn)樗墓δ芊倍啵沟秒y于入手了。在這篇文章中,SamBrodkin分享了他最常用的一些Eclipse功能。他也提到了那些會(huì)讓你的手指動(dòng)的飛快的熱鍵組合。在工作的時(shí)候,人們會(huì)懷疑你是在打電玩。(1,200字;2005年8月29日)
      
      Eclipse最妙的地方是它的功能是如此的豐富。如果你找不到某項(xiàng)功能,要么是你沒有好好的去找,要么有一個(gè)插件可以實(shí)現(xiàn)它。Eclipse最糟的地方也是它的功能如此的豐富。擁擠的工具條,臃腫的菜單,以及配置對(duì)話框都讓我想起了拉比林特斯迷宮(譯者注:Minotau’slabyrinth,希臘神戶中的人身牛頭怪,住在Labyrinth迷宮中,吃人們供奉的童男童女,最后被Theseus殺死)(盡管配置對(duì)話框在Eclipse3.1中已經(jīng)好了很多)。甚至是有經(jīng)驗(yàn)的Eclipse程序員也是慢吞吞,笨手笨腳的。我觀察過無數(shù)的同事,當(dāng)試圖在Eclipse的navigation面板里找一個(gè)類的時(shí)候,不假思索的按下“Ctrl+Shift+T”(打開型別(opentype))。其實(shí),只要有意識(shí)的投入一點(diǎn)點(diǎn)時(shí)間,你也會(huì)不在笨手笨腳的,而成為熱鍵高手。
      
      精通Eclipse不單提高了你的效率,(我知道,按小時(shí)賺錢的簽約人更喜歡文本編輯器),對(duì)你的求職簡歷也有好處。既然Eclipse已經(jīng)越來越多的出現(xiàn)在Java工作說明上,那么在你的求職簡歷上也絕對(duì)是個(gè)好詞。我把它放在我的個(gè)人簡歷上,就在POJO(簡單初始Java對(duì)象)和POJI(簡單初始Java接口)的中間。越來越多的公司轉(zhuǎn)向Eclipse,因?yàn)樗赓M(fèi),而且為大多數(shù)程序員所接受。(除了那些少有的IntelliJ和Emacs的崇拜者)
      
      因此,你的簡歷上并不都是幫助你提高編程效率的大話,在本文中,我將給你幾條Eclipse高效的建議。注意:如果你是個(gè)在尋找初學(xué)者教程的新手,那么請(qǐng)參看資源部分。
      
      Eclipse的快捷鍵組合功能
      
      使用Eclipse的快捷鍵組合功能,讓你看起來像是在打電玩。特別是讓人想起《真人快打》(MortalCombat)的感覺。要成為《真人快打》的高手,你必須記住大量的按鍵順序。比如,要使出Sub-ZeroSkeletonRip,你必須依次按下????和X鍵。這里的控制桿就是Ctrl,Alt,Shift,字母鍵,數(shù)字鍵和功能鍵的組合。
      
      讓我們按照使用頻率來看看我最愛用的一些熱鍵組合。(注:以下內(nèi)容在Eclipse3.02及一上版本通過測試)
      
      1.Control-Shift-T:打開類型(Opentype)。如果你不是有意磨洋工,還是忘記通過源碼樹(sourcetree)打開的方式吧。
      
      2.Control-Shift-R:打開資源(不只是用來尋找Java文件)。小提示:利用Navigator視圖的黃色雙向箭頭按鈕讓你的編輯窗口和導(dǎo)航器相關(guān)聯(lián)。這會(huì)讓你打開的文件對(duì)應(yīng)顯示在導(dǎo)航器的層級(jí)結(jié)構(gòu)中,這樣便于組織信息。如果這影響了速度,就關(guān)掉它。
      
      3.F3:打開申明(Opendeclaration)?;蛘?,利用DeclarationTab(在Java視圖模式下,選擇WindowsShowView-->Declaration)。當(dāng)你選中代碼中的一個(gè)方法,然后按這個(gè)按鍵,它會(huì)把整個(gè)方法在申明方框里顯示出來。
      
      4.Alt-leftarrow:在導(dǎo)航歷史記錄(NavigationHistory)中后退。就像Web瀏覽器的后退按鈕一樣,在利用F3跳轉(zhuǎn)之后,特別有用。(用來返回原先編譯的地方)
      
      5.Alt-rightarrow:導(dǎo)航歷史記錄中向前。
      
      6.Control-Q:回到最后依次編輯的地方。這個(gè)快捷鍵也是當(dāng)你在代碼中跳轉(zhuǎn)后用的。特別是當(dāng)你鉆的過深,忘記你最初在做什么的時(shí)候。
      
      7.Control-Shift-G:在workspace中搜索引用(reference)。這是重構(gòu)的前提。對(duì)于方法,這個(gè)熱鍵的作用和F3恰好相反。它使你在方法的棧中,向上找出一個(gè)方法的所有調(diào)用者。一個(gè)與此相關(guān)的功能是開啟“標(biāo)記”功能(occurrencemarking)。選擇Windows->Preferences->Java->Editor->MarkOccurrences,勾選選項(xiàng)。這時(shí),當(dāng)你單擊一個(gè)元素的時(shí)候,代碼中所有該元素存在的地方都會(huì)被高亮顯示。我個(gè)人只使用“標(biāo)記本地變量”(MarkLocalVariables)。注意:太多的高亮顯示會(huì)拖慢Eclipse。
    posted @ 2007-04-30 10:38 jadmin 閱讀(52) | 評(píng)論 (0)編輯 收藏
    目前, 國內(nèi)外信息化建設(shè)已經(jīng)進(jìn)入基于Web應(yīng)用為核心的階段, Java作為應(yīng)用于網(wǎng)絡(luò)的最好語言,前景無限看好。然而,就算用Java建造一個(gè)不是很煩瑣的web應(yīng)用,也不是件輕松的事情。概括一下,實(shí)施Java的WEB項(xiàng)目需要掌握的技術(shù)如下:



    ??????? Java語言
    ??????? 面向?qū)ο蠓治鲈O(shè)計(jì)思想
    ??????? 設(shè)計(jì)模式和框架結(jié)構(gòu)
    ??????? XML語言
    ??????? 網(wǎng)頁腳本語言
    ??????? 數(shù)據(jù)庫
    ??????? 應(yīng)用服務(wù)器
    ??????? 集成開發(fā)環(huán)境

    下面我們具體地看每個(gè)技術(shù).

    1、Java語言

    Java語言體系比較龐大,包括多個(gè)模塊。從WEB項(xiàng)目應(yīng)用角度講有JSP、Servlet、JDBC、JavaBean(Application)四部分技術(shù)。

    (1)、Java Database Connectivity (JDBC)技術(shù)
    在Java Web應(yīng)用開發(fā)中,數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的使用是不可缺少的。JDBC(Java Database Connectivity) 是一種用于執(zhí)行 SQL 語句的 Java API。它由一組用 Java 編程語言編寫的類和接口組成。JDBC 為工具/數(shù)據(jù)庫開發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,使他們能夠用純Java API 來編寫數(shù)據(jù)庫應(yīng)用程序。
    簡單地說,JDBC 可做三件事:
    l與數(shù)據(jù)庫建立連接,
    l發(fā)送 SQL 語句,
    l處理結(jié)果。

    (2)、Servlet技術(shù)
    Servlet是運(yùn)行在服務(wù)器端的程序,可以被認(rèn)為是服務(wù)器端的applet。servlet被Web服務(wù)器(例如Tomcat)加載和執(zhí)行,就如同applet被瀏覽器加載和執(zhí)行一樣。servlet從客戶端(通過Web服務(wù)器)接收請(qǐng)求,執(zhí)行某種操作,然后返回結(jié)果。

    Servlet的主要優(yōu)點(diǎn)包括
    lServlet是持久的。servlet只需Web服務(wù)器加載一次,而且可以在不同請(qǐng)求之間保持服務(wù)(例如一次數(shù)據(jù)庫連接)。
    lServlet是與平臺(tái)無關(guān)的。如前所述,servlet是用Java編寫的,它自然也繼承了Java的平臺(tái)無關(guān)性。
    lServlet是可擴(kuò)展的。由于servlet是用Java編寫的,它就具備了Java所能帶來的所有優(yōu)點(diǎn)。Java是健壯的、面向?qū)ο蟮木幊陶Z言,它很容易擴(kuò)展以適應(yīng)你的需求。servlet自然也具備了這些特征。
    lServlet是安全的。從外界調(diào)用一個(gè)servlet的惟一方法就是通過Web服務(wù)器。這提供了高水平的安全性保障,尤其是在你的Web服務(wù)器有防火墻保護(hù)的時(shí)候。
    lServlet可以在多種多樣的客戶機(jī)上使用。由于servlet是用Java編寫的,所以你可以很方便地在HTML中使用它們。

    (3)、JavaServer Pages(JSP) 技術(shù)
    JSP是從Servlet上分離出來的一小部分,簡化了開發(fā),加強(qiáng)了界面設(shè)計(jì)。JSP定位在交互網(wǎng)頁的開發(fā)。運(yùn)用Java語法,但功能較Servlet弱了很多,并且高級(jí)開發(fā)中只充當(dāng)用戶界面部分。JSP容器收到客戶端發(fā)出的請(qǐng)求時(shí),首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式響應(yīng)給客戶端。其中程序片段可以是:操作數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送 E-Mail 等等,這些都是建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,與客戶端的瀏覽器無關(guān),因此,JSP 稱為Server-Side Language。

    JavaServer Pages的主要優(yōu)點(diǎn)包括
    ●一次編寫,各處執(zhí)行(Write o-nce, Run Anywhere)特性
    作為Java 平臺(tái)的一部分,JavaServer Pages 技術(shù)擁有Java語言“一次編寫,各處執(zhí)行”的特點(diǎn)。隨著越來越多的供貨商將JavaServer Pages 技術(shù)添加到他們的產(chǎn)品中,您可以針對(duì)自己公司的需求,做出審慎評(píng)估后,選擇符合公司成本及規(guī)模的服務(wù)器,假若未來的需求有所變更時(shí),更換服務(wù)器平臺(tái)并不影響之前所投下的成本、人力所開發(fā)的應(yīng)用程序。
    ● 搭配可重復(fù)使用的組件
    JavaServer Pages技術(shù)可依賴于重復(fù)使用跨平臺(tái)的組件(如:JavaBean或Enterprise JavaBean組件)來執(zhí)行更復(fù)雜的運(yùn)算、數(shù)據(jù)處理。開發(fā)人員能夠共享開發(fā)完成的組件,或者能夠加強(qiáng)這些組件的功能,讓更多用戶或是客戶團(tuán)體使用。基于善加利用組件的方法,可以加快整體開發(fā)過程,也大大降低公司的開發(fā)成本和人力。
    ● 采用標(biāo)簽化頁面開發(fā)
    Web 網(wǎng)頁開發(fā)人員不一定都是熟悉Java 語言的程序員。因此,JSP 技術(shù)能夠?qū)⒃S多功能封裝起來,成為一個(gè)自定義的標(biāo)簽,這些功能是完全根據(jù)XML 的標(biāo)準(zhǔn)來制訂的,即JSP 技術(shù)中的標(biāo)簽庫(Tag Library)。因此,Web 頁面開發(fā)人員可以運(yùn)用自定義好的標(biāo)簽來達(dá)成工作需求,而無須再寫復(fù)雜的Java 語法,讓W(xué)eb 頁面開發(fā)人員亦能快速開發(fā)出一動(dòng)態(tài)內(nèi)容網(wǎng)頁。
    今后,第三方開發(fā)人員和其他人員可以為常用功能建立自己的標(biāo)簽庫,讓W(xué)eb 網(wǎng)頁開發(fā)人員能夠使用熟悉的開發(fā)工具,如同HTML 一樣的標(biāo)簽語法來執(zhí)行特定功能的工作。
    ● N-tier 企業(yè)應(yīng)用架構(gòu)的支持
    有鑒于網(wǎng)際網(wǎng)絡(luò)的發(fā)展,為因應(yīng)未來服務(wù)越來越繁雜的要求,且不再受地域的限制,因此,
    必須放棄以往Client-Server的Two-tier 架構(gòu),進(jìn)而轉(zhuǎn)向更具威力、彈性的分散性對(duì)象系統(tǒng)。由于JavaServer Page 技術(shù)是Java 2 Platform Enterprise Edition (J2EE)集成中的一部分,它主要是負(fù)責(zé)前端顯示經(jīng)過復(fù)雜運(yùn)算后之結(jié)果內(nèi)容,而分散性的對(duì)象系統(tǒng)則是主要依賴EJB ( Enterprise JavaBean )和JNDI ( Java Naming and Directory Interface )構(gòu)建而成。

    (4)、JavaBean(Application)應(yīng)用組件技術(shù)
    Application是Java應(yīng)用程序,在WEB項(xiàng)目和一些開發(fā)中主要應(yīng)用JavaBean。它就是Application的一部分,邏輯運(yùn)算能力很強(qiáng),能極大的發(fā)揮Java語言的優(yōu)點(diǎn)。JavaBean 被稱為是Java 組件技術(shù)的核心。JavaBean 的結(jié)構(gòu)必須滿足一定的命名約定。JavaBean能提供常用功能并且可以重復(fù)使用,這使得開發(fā)人員可以把某些關(guān)鍵功能和核心算法提取出來封裝成為一個(gè)組件對(duì)象,這樣就增加了代碼的重用率和系統(tǒng)的安全性。

    高級(jí)的WEB項(xiàng)目會(huì)應(yīng)用到以上所有技術(shù),它們之間聯(lián)合使用和協(xié)作開發(fā)會(huì)提高開發(fā)的效率和系統(tǒng)的性能。

    2、面向?qū)ο蠓治鲈O(shè)計(jì)思想

    Java語言是完全面向?qū)ο蟮恼Z言,所以在項(xiàng)目設(shè)計(jì)時(shí)會(huì)有很大的幫助,在設(shè)計(jì)時(shí)應(yīng)盡量舍棄以往的面向過程的設(shè)計(jì)方式。

    在分析項(xiàng)目業(yè)務(wù)關(guān)系的時(shí)候,應(yīng)用一些UML(Unified Modeling Language)圖,例如常用的用例圖(use case diagram),類圖(class diagram),時(shí)序圖(sequence diagram)等等,會(huì)有很大的幫助,這樣能盡快找出業(yè)務(wù)邏輯主要面對(duì)的對(duì)象,然后對(duì)每個(gè)對(duì)象進(jìn)行行為劃分,最后再實(shí)現(xiàn)對(duì)象之間的集成和通信。

    3、設(shè)計(jì)模式和框架結(jié)構(gòu)

    Java從語言角度來講不是很難,但是從整體設(shè)計(jì)角度來講我們還需要了解一些高級(jí)應(yīng)用框架。如果要設(shè)計(jì)一個(gè)良好的框架結(jié)構(gòu),單單只掌握J(rèn)ava語言遠(yuǎn)遠(yuǎn)不夠。這就涉及到一個(gè)設(shè)計(jì)模式,還有和設(shè)計(jì)模式相關(guān)的一些知識(shí)。

    設(shè)計(jì)模式在Java項(xiàng)目實(shí)施過程更是重中之重。主要在與兩層的設(shè)計(jì)模式、三層的設(shè)計(jì)模式和N層的設(shè)計(jì)模式。它直接決定著項(xiàng)目的應(yīng)用、部署和實(shí)際開發(fā)設(shè)計(jì)。

    在普通的WEB項(xiàng)目中很多采用兩層的開發(fā)結(jié)構(gòu)。JSP+Servlet或JSP+JavaBean。當(dāng)對(duì)開發(fā)要求高的項(xiàng)目中使用很多的還是MVC的三層開發(fā)結(jié)構(gòu),也就是JSP+Servlet+JavaBean。它能分有效的分離邏輯開發(fā),使開發(fā)人員能專注于各自的開發(fā)。同時(shí)也能時(shí)整個(gè)開發(fā)結(jié)構(gòu)流程更清晰,但是需要比較高的開發(fā)配合度。
    在項(xiàng)目中,我們經(jīng)常使用著名的Model-View-Controller(MVC)架構(gòu)。MVC架構(gòu)是隨著smalltalk language語言的發(fā)展提出的,它是一個(gè)著名的用戶界面設(shè)計(jì)架構(gòu)。經(jīng)典的MVC架構(gòu)把一個(gè)組件(可認(rèn)為是整個(gè)應(yīng)用程序的一個(gè)模塊)劃分成三部分組 Model管理這個(gè)模塊中所用到的數(shù)據(jù)和業(yè)務(wù)邏輯。而View 管理模塊如何顯示給用戶,Controller 決定如何處理用戶和該模塊交互式時(shí)候產(chǎn)生的事件 如用戶點(diǎn)擊一個(gè)按鈕等。

    4、XML語言

    在服務(wù)器和設(shè)計(jì)模式結(jié)構(gòu)中會(huì)應(yīng)用到自定義文件,而且在應(yīng)用高級(jí)設(shè)計(jì)時(shí)也會(huì)定義自用的標(biāo)簽,現(xiàn)在流行的是用XML去定義配置,所以XML語言應(yīng)該有一定掌握。
    當(dāng)前,Java 2平臺(tái)企業(yè)版(J2EE)架構(gòu)在廠商市場和開發(fā)者社區(qū)中倍受推崇。作為一種工具,可擴(kuò)展標(biāo)記語言(XML)簡化了數(shù)據(jù)交換、進(jìn)程間消息交換這一類的事情,因而對(duì)開發(fā)者逐漸變得有吸引力,并開始流行起來。自然,在J2EE架構(gòu)中訪問或集成XML解決方案的想法也很誘人。因?yàn)檫@將是強(qiáng)大系統(tǒng)架構(gòu)同高度靈活的數(shù)據(jù)管理方案的結(jié)合。

    XML的應(yīng)用似乎是無窮無盡的,但它們大致上可以分為三大類:
    1、簡單數(shù)據(jù)的表示和交換(針對(duì)XML的簡單API(SAX)和文檔對(duì)象模型(DOM)語法解析,不同的文檔類型定義(DTDs)和概要(schemas))
    2、用戶界面相關(guān)、表示相關(guān)的上下文(可擴(kuò)展樣式表語言(XSL),可擴(kuò)展樣式表語言轉(zhuǎn)換(XSLT))
    3、面向消息的計(jì)算(XML-RPC(遠(yuǎn)程過程調(diào)用),基于SOAP協(xié)議的Web 服務(wù)(Web Services),電子化業(yè)務(wù)XML(ebXML))

    5、網(wǎng)頁腳本語言

    為了提高WEB項(xiàng)目的整體性能,提高人機(jī)交互的友好界面,網(wǎng)頁的腳本語言是很有用處的,有的時(shí)候可以解決很大的難題或提高程序的性能和應(yīng)用性。

    網(wǎng)頁腳本語言的執(zhí)行都是在客戶端執(zhí)行的,速度很很快,并且大多的操作與服務(wù)器沒有交互運(yùn)算,所以在一些應(yīng)用中非常理想。在設(shè)計(jì)WEB項(xiàng)目的應(yīng)用中,網(wǎng)頁的腳本語言起著不能忽視的作用,所以如果設(shè)計(jì)WEB項(xiàng)目的應(yīng)用中,對(duì)JavaScript應(yīng)有一定的了解。

    JavaScript是一種基于對(duì)象(Object Based)和事件驅(qū)動(dòng)(Event Driven)并具有安全性能(Secure)的腳本語言。使用它的目的是與HTML超文本標(biāo)記語言、Java 腳本語言(Java小程序)一起實(shí)現(xiàn)在一個(gè)Web頁面中鏈接多個(gè)對(duì)象,與Web客戶交互作用。從而可以開發(fā)客戶端的應(yīng)用程序等。它是通過嵌入或調(diào)入在標(biāo)準(zhǔn)的HTML語言中實(shí)現(xiàn)的。它具有以下幾個(gè)基本特點(diǎn):
    1.它是一種腳本編寫語言
    JavaScript是一種腳本語言,它采用小程序段的方式實(shí)現(xiàn)編程。像其它腳本語言一樣,JavaScript同樣已是一種解釋性語言,它提供了一個(gè)易的開發(fā)過程。
    它的基本結(jié)構(gòu)形式與C、C++、VB十分類似。但它不像這些語言一樣,需要先編譯,而是在程序運(yùn)行過程中被逐行地解釋。它與HTML標(biāo)識(shí)結(jié)合在一起,從而方便用戶的使用操作。
    2. 基于對(duì)象的語言。
    JavaScript是一種基于對(duì)象的語言,同時(shí)以可以看作一種面向?qū)ο蟮摹_@意味著它能運(yùn)用自己已經(jīng)創(chuàng)建的對(duì)象。因此,許多功能可以來自于腳本環(huán)境中對(duì)象的方法與腳本的相互作用。
    3.簡單性
    JavaScript的簡單性主要體現(xiàn)在:首先它是一種基于Java基本語句和控制流之上的簡單而緊湊的設(shè)計(jì), 從而對(duì)于學(xué)習(xí)Java是一種非常好的過渡。其次它的變量類型是采用弱類型,并未使用嚴(yán)格的數(shù)據(jù)類型。
    4.安全性
    JavaScript是一種安全性語言,它不允許訪問本地的硬盤,并不能將數(shù)據(jù)存入到服務(wù)器上,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互。從而有效地防止數(shù)據(jù)的丟失。
    5. 動(dòng)態(tài)性
    JavaScript是動(dòng)態(tài)的,它可以直接對(duì)用戶或客戶輸入做出響應(yīng),無須經(jīng)過Web服務(wù)程序。它對(duì)用戶的響應(yīng),是采用以事件驅(qū)動(dòng)的方式進(jìn)行的。所謂事件驅(qū)動(dòng),就是指在主頁(Home Page)中執(zhí)行了某種操作所產(chǎn)生的動(dòng)作,就稱為“事件”(Event)。比如按下鼠標(biāo)、移動(dòng)窗口、選擇菜單等都可以視為事件。當(dāng)事件發(fā)生后,可能會(huì)引起相應(yīng)的事件響應(yīng)。


    6、開發(fā)工具
    (1)、數(shù)據(jù)庫
    在主要的應(yīng)用中,數(shù)據(jù)庫相關(guān)的環(huán)節(jié)應(yīng)用很多,所以對(duì)數(shù)據(jù)庫應(yīng)該有一定了解。不能單單只了解一種數(shù)據(jù)庫,因?yàn)樵诤芏鄬?shí)際開發(fā)中會(huì)提出很多數(shù)據(jù)庫解決方案,所以只有在了解多種數(shù)據(jù)庫的情況下才能有一個(gè)比較方案。
    對(duì)于數(shù)據(jù)庫應(yīng)該了解他的性能和一些基本的操作常識(shí),還有該數(shù)據(jù)庫的特點(diǎn)。而針對(duì)與Java語言WEB項(xiàng)目的數(shù)據(jù)庫開發(fā)則主要是對(duì)JDBC的應(yīng)用,還有數(shù)據(jù)庫事務(wù)處理和連接池等高級(jí)概念的應(yīng)用。


    (2)、Web服務(wù)器

    同數(shù)據(jù)庫一樣,應(yīng)該了解該服務(wù)器的性能,特點(diǎn)和一些常識(shí)。
    在應(yīng)用方面,Web服務(wù)器主要是針對(duì)于配置和部署,對(duì)目錄的配置,調(diào)試;對(duì)配置文件屬性的修改;對(duì)訪問權(quán)限和并發(fā)性的控制;Java類的部署等。

    (3)、集成開發(fā)環(huán)境(IDE):
    “公欲善其事, 必先利其器”. 對(duì)于Web應(yīng)用開發(fā)人員來講,好的集成開發(fā)環(huán)境(IDE:Integrated Development Enviroment)是非常重要的。目前在市場上占主導(dǎo)位置的一個(gè)集成開發(fā)工具就是Eclipse.
    posted @ 2007-04-30 10:35 jadmin 閱讀(57) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共50頁: First 上一頁 42 43 44 45 46 47 48 49 50 下一頁 
    主站蜘蛛池模板: 亚洲高清无码专区视频| 久久精品国产亚洲AV电影网| 免费人成网站在线播放| 曰批视频免费40分钟试看天天| 污污视频免费观看网站| 在线看片免费人成视频播| 亚洲综合色一区二区三区| 亚洲色四在线视频观看| 亚洲区日韩区无码区| 成人一a毛片免费视频| 91热久久免费精品99| a级片免费在线观看| 曰批免费视频播放免费| 亚洲欧美日韩综合久久久久| 亚洲国产成人91精品| 亚洲国产精品久久久久| 国产精品久久久亚洲| 久久久久国产亚洲AV麻豆 | 亚洲精品岛国片在线观看| 天天看免费高清影视| 无码人妻久久一区二区三区免费丨 | 精品无码国产污污污免费网站国产| 亚洲1区2区3区精华液| 亚洲欧美第一成人网站7777| 亚洲最大的成人网站| 国产婷婷综合丁香亚洲欧洲| 亚洲a级在线观看| 亚洲乱码一二三四五六区| 亚洲国产精品久久久久久| 亚洲精品免费观看| 无码乱人伦一区二区亚洲一| 久久伊人久久亚洲综合| 亚洲av成人无码久久精品| 国产V亚洲V天堂A无码| 亚洲va久久久噜噜噜久久| 亚洲高清专区日韩精品| 久久精品国产亚洲| 97se亚洲综合在线| 亚洲日本在线播放| 亚洲天堂2017无码中文| 亚洲AV永久无码精品放毛片|