是否還在為了實現AJAX的前進后退而煩惱呢?除了使用dhtmlhistory這個解決方案,你現在還可以通過GWT來很容易地實現這些功能。再也不用擔心瀏覽器的前進和后退按鈕成為擺設了。
AJAX提高了用戶的體驗,但是相應的,開發的復雜程度也提高了,debug也變得異常的困難。通過GWT,程序員們可以很容易地進行debug工序。而且,這一切都是在java的環境中進行。
瀏覽器兼容性問題總是能困擾著web開發人員。GWT構建出來的Web程序,將會兼容Firefox,IE,Mozilla, Safari, 和Opera等主流瀏覽器。而兼容性的工作,不再需要程序員們來進行。
在GWT中,遠程通訊將會變得異常簡單,程序員們需要做的,僅僅是建立一個可序列化的對象。序列化和解序列化,將會由GWT來進行。
下面是GWT自帶的幾個Demo: (點擊相應頁面進入)
本質上,瀏覽器向服務器請求靜態圖片如jpeg時,服務器返回的仍然是標準的http響應,只不過http頭的contentType不是text/html,而是image/jpeg而已,因此,我們在Servlet中只要設置好contentType,然后發送圖像的數據流,瀏覽器就能正確解析并顯示出圖片。
在Java中,java.awt和java.awt.image包提供了基本的繪制圖像的能力,我們可以在內存中繪制好需要的圖形,然后編碼成jpeg或其他圖像格式,最后發送相應給瀏覽器即可。下面是使用Servlet動態創建圖像的詳細步驟:
1.創建BufferedImage對象,該對象存在內存中,負責保存繪制的圖像;
2.創建Graphics2D對象,該對象負責繪制所需的圖像;
3.當繪制完成后,調用com.sun.image.codec.jpeg包的JPEG編碼器對其編碼;
4.最后將編碼后的數據輸出至HttpResponse即可。
注意com.sun.image.codec.jpeg包位于JDK目錄的rt.jar包中,它不是公開的API,需要將rt.jar復制到web應用程序的WEB-INF/lib下。
我們先創建一個最簡單的Servlet:
我們首先設置了response的contentType為image/jpeg,這樣瀏覽器就可以正確識別。
然后,創建一個大小為100x100的BufferedImage對象,準備繪圖:
編碼后的JPEG圖像直接輸出到了out對象中,我們只要傳入response. getOutputStream()就可以直接輸出到HttpResponse中。
下面是完整的代碼:
最后將這個Servlet編譯,注冊到web.xml中,映射路徑為/CreateImage,寫一個簡單的index.html測試:
如能正確顯示,大功告成!
該考試測試 Java 的基礎知識并需要對該語言的語法和語義有深入理解。
1.參加培訓或自學Java經典課程。如果有C語言和面向對象的基礎,只需自學SL275課程以及JDK1.4API,否則應該參加相應的培訓班進行學習。我對C語言和面向對象都有一些基礎,同時又參加了SL275+Weblogic+JSP課程的學習。
2.確定考試版本,明確考查的知識點及知識點的考查難度。目前SCJP考試有兩個版本1.2和1.4,兩個版本的比較如下表:
其中選擇題有兩種形式:(1)給出一段代碼讓選擇其運行結果;(2)給出關于某基本概念的一些描述語句讓選擇正確的答案。填空題一般是給出一段正確的代碼,不提供選擇項,而讓你填寫上運行結果。
兩個版本考查的知識點最大的差別在于310-025包含I/O、AWT,且對各個知識點的考查難度相對較容易,而310-035中去掉了I/O和AWT部分的內容,但增加了對Assertion的考查,同時對Wrapper classes、Collections、hashcode( )和equals( )考查的難度有所加大。所以要根據自己的情況選擇合適的版本。我在復習時覺得I/O這一部分的內容較多且不好記憶,就選擇了310-035,這個版本較難,也是對自己的一個挑戰。
3.根據考查的知識點做練習題。由于認證考試是以試題的形式來考查對知識點的掌握情況,所以多做題是通過考試的最有效方法之一,通過對SL275課程系統的學習,掌握了有關知識點的基礎知識以后,必須通過做題來測試自己對知識點的掌握情況,書中寫的有關知識點的內容比較概括,有時自己覺得已經掌握了這部分內容,但做題時可能會出現各式各樣的錯誤,比如在聲明main( )方法時應為public static void main( String args[ ] ){……},如果在聲明時漏寫了static,則在編譯時可以通過,而運行時會提示出錯信息;如果main( )中的參數寫string args[ ],則在編譯時會提示出錯,在考試時有類似的題目,故意設一些陷阱,一不小心看似簡單的問題卻有可能失分。對于給出一段程序代碼要求選擇其運行結果的題目,最好親手調試并分析其結果。
對考查Wrapper classes、Collections、hashcode( )和equals( )方法的題目要認真查看API文檔(Sun官方網站提供了下載的鏈接,也可以在Sun網站上在線查看)并做好筆記供以后查閱。通過做題鞏固知識點、適應考試題型、找出容易出錯的地方,同時對所學知識點也起到了查漏補缺的作用。
4.下載相應的模擬環境進行實戰訓練,或者在線測試。知識點和題型都掌握以后,還不要急于考試,應該從網上下載一個模擬考試環境的軟件進行實戰演練。我下載了Jcertify5.0,它需在JDK1.3環境下安裝運行,該軟件可以設置考查的范圍進行practice或者test,是一個很不錯的模擬軟件,里面的題目與實際考試題目難易程度相當。
通過該軟件可以檢驗你在規定的時間內(120分鐘)完成題目的情況及各個知識點掌握的程度,這樣就可以根據測驗結果有針對性的復習掌握的不太好的知識點,反復測驗、練習,直到自己滿意為止。
5.考前給自己足夠的信心。通過做練習和模擬軟件測驗,對各個知識點都比較有把握以后,其實這時參加考試已經沒有問題了,要相信自己的實力,給自己加油,此時切不可再做較難的題目,我當時就犯了這樣的大忌,聽說310-035的考試比較難,目前通過的人數不多,我怕考試時的題目比我做的練習題難,在考試的前一天,又做了一套題目,共43題,通過率為僅為42%,這個結果令我很失望,也喪失了自信心,晚上做夢一直考試且考試結果很糟糕,第二天醒來頭昏腦脹,本來預約好的考試不得不往后推遲,這是沉痛的教訓。
6.預約、考試。知名的IT認證廠商在一些大城市都有指定的考試中心,Sun認證也不例外,考試前三天到Sun指定的考試中心報名,由他們幫你注冊,除了考試做題,其他的事情你盡管交給考試中心去做就行了。
7.考試注意事項。按預約的時間提前到達考試中心,熟悉考試環境,穩定情緒,考試中心在考場里設置有監視器,你的一舉一動都會被錄制下來,所以考試來不得半點虛假,盡早打消“打小抄”的念頭。考務人員幫你進入考試系統后,開始進行考試,考試分三個階段:
(1)正式考試前的問卷調查,給定時間為15分,有10來個問題,給出四個選項供你選擇,主要調查你對SCJP要考查的知識點的掌握情況,如對數組、類的定義是精通、是了解但需要別人幫助還是不懂等,這部分內容的回答不影響你的考試成績,如果你讀懂問題的意思了,你可以根據自己的實際情況進行選擇,否則你盡管隨意選一個,一路Next下去,直到所有的問題做完;
(2)正式考試,共120分鐘,選擇題在題面中注明了正確答案的數目(如:choose two),按Next做下一題,單擊exhibit按鈕查看題目提供的代碼;
(3)題目做完后的問卷調查,同樣也不影響你的考試結果。問卷結束后緊張、激動的時刻就要到了,此時你可以查看考試結果,考試系統列出你對各個知識點答題情況的一覽表,如果你的成績超過指定的分數底線,則Result即為Pass。
拿到考試結果通知單的一刻是令人興奮的,考后的總體感覺是SCJP認證并不像自己想象的那么難,只要你做好了充分的準備,拿到SCJP認證證書不成問題。
2. codeZoo http://www.codezoo.com/
這是O'Reily旗下的,除了Java之外,還有Ruby、Python。
3. Java學習源代碼檢索系統 http://www.chinaitlab.com/www/school/codesearch/index.html
難得看見國產的,好歹也要支持一下,分類也算清楚。
4. Koders http://www.koders.com/
是個綜合查詢的網站,不過它好像是從代碼中查找關鍵詞,包含的語言挺多的。
5. Resources for Java server-side developers http://www.java201.com/
確切的說,它是一個資源收集的網站,代碼查詢并不多。不過它分類相當細,如Articles、Books、Examples、Extensions、Frameworks等類,你可以輸入Spring或Hibernate作為關鍵詞搜索一下看看。
存貨不多,以后有了再補充。
******
設計師
******
在基于組件的應用系統開發中,一個或幾個人必須對這個系統的整體需求有全面的了解,比如系統的控制流程,和其他的接口等等。有些公司稱這個角色為總工程師,不管怎么叫,這個角色非常重要,他承擔協調不同開發小組之間的工作,幫助他們考慮系統這個“大圖”。
********************
表現邏輯層的團隊角色
********************
在表現層,用戶界面是動態生成的。需要如下開發人員:
1、 Java servlet 開發人員
2、 JSP 開發人員
3、 HTML 設計人員
4、 美工人員
5、 客戶端的JavaScript 開發人員
Servlet 開發人員建立表現層的邏輯,而其他人員建立表現的形式。
Java Servlet 開發人員
Servlet處理頁和頁之間的瀏覽,會話管理,簡單的輸入驗證。Servlet也將業務邏輯的元素連接起來。
Servlet開發人員必須理解一些相關事宜,HTTP請求,安全,多語言,和一些頁面元素如session, cookie,超時等等。J2EE的應用里面,servlet必須用Java來寫,Servlet可能會調用JSP, EJB, JDBC等等。因此,servlet開發人員要與應用系統的其他人員緊密合作。
JSP 開發人員
JSP開發人員與servlet開發人員密切合作來定義系統的表現層頁面。即使在復雜的開發項目里,JSP和servlet的開發人員也可能是一個人。
然而,如果一個系統中大部分Java在servlet而不是在JSP里,JSP人員就不必對Java非常熟悉。
HTML 設計人員
HTML 設計人員對HTML頁面進行優化。例如,他可能要完成以下任務:
1、保證在不同的瀏覽器中所有的頁面都能正常顯示
2、 保證低速的調制解調器訪問也不受影響
3、 對JSP設計人員的頁面進行進一步的優化
美工人員
美工人員創建圖片等等。這些圖片要能小體積,快速下載。美工與HTML頁面人員緊密合作。
客戶端的JavaScript 開發人員
使用客戶端的JavaScript有很多原因。比如,可以處理簡單的輸入驗證,不必提交給服務器,還可以讓用戶界面更生動。這個角色和servlet, JSP人員緊密合作。
********************
業務邏輯層的團隊角色
********************
業務邏輯層包含業務規則和業務實體。需要以下人員:
1、Session bean 開發人員
2、 Entity bean 開發人員
Session Bean 開發人員
Session beans包含業務處理和業務規則的邏輯。比如,一個session bean 可能設計成計算一個支票的稅率。如果一個系統面臨處理經常變化的復雜邏輯,而又大量使用session bean,結果是,session bean就需要不斷的更新。
Session bean 的開發人員一般是一個領域的專家,理解復雜的,專門領域的邏輯,還有數據驗證的規則。這個人員與servlet和entity bean開發人員緊密合作。
Session bean可能需要調用JDBC接口,和其他的EJB。無狀態的session bean系統運行的會更好一些。因為,如果計算費率是一個有狀態的session bean,系統就必須訪問一個保存bean的狀態信息的服務器。如果那個服務器恰巧出現問題,整個流程就會受阻。
Entity Bean 開發人員
Entity bean代表永久的對象,如一個數據庫中的一條記錄。Entity bean開發人員的任務是設計一個面向對象的所有業務數據的組織圖。建立面向對象的試圖意味著要將數據庫中的表(關系型的)映射成entity bean。例如,開發人員需要將客戶表,發票表,和訂單表轉換成相應的客戶,發票,和訂單對象。
一個entity bean 開發人員與session bean, Servlet開發人員密切合作,保證應用系統提供快速的,靈活的,可擴展的對業務數據的訪問。
Entity bean 可能會大量的調用JDBC接口。而entity bean 之間的調用會很少。
**********************
數據庫訪問層的團隊角色
**********************
在數據庫訪問層,開發人員需要建立關系型數據庫的ER圖,數據字典等等相關文檔。所有對數據庫的修改,訪問等等權限操作都要經過數據庫訪問層開發人員。這個角色在大部分項目中擔當DBA的角色。
團隊組建之后,就可以開始設計用戶界面。
************
設計用戶界面
************
建議從前到后開始設計應用系統。就是說,先設計用戶界面,再設計EJB,這樣效率最高。
安博公司已經做了大量的界面設計工作,以后的工作完全可以參照已有的設計。下面提一些常用的建議性問題:
1、頁面流程是什么?
2、 每個頁面上的命令按鈕是什么?
3、是否適用frame?
4、是否有公司標準的Logo,廣告條幅?
5、 在什么地方需要登錄過程?
6、 多語言的問題?
這些和設計servlet, JSP相關。