用JBuilderX開發WEB應用程序- -
Borland公司的JBuilder是世界領先的Java開發環境。目前最新版本JbuilderX是一個開發企業級Java應用的綜合性跨平臺環境,它建立在JBuilder屢獲殊榮的特點上,增加了很多新的特性,從而成爲目前最強大的 Java可視化開發環境。本文將通過一個簡單的WEB項目,使您快速進入JBuilderX的殿堂。
JBuilderX的功能極其豐富,本文不會也不可能面面俱到地介紹所有的功能,只會對涉及例子項目開發的一些容易忽視或不容易掌握的功能展開介紹,而對一些常見的功能將一點而過,或不提及,相信您可以在項目開發操作過程中自然掌握那些基本的功能。您也可以通過JBuilderX在線幫助文檔來了解和掌握這些內容,推薦您閱讀help->JBuilder toturials中前4個基礎教程。
項目介紹
雖然JBuilderX可以用於開發桌面、無線、applet等應用程序,但80%以上的使用者用它開發J2EE的WEB應用程序,所以我設計了一個簡單的WEB應用項目,亦步亦趨地帶領您開發出一個可以運行的WEB應用程序。
這個WEB項目只包含一個用戶登錄的功能,其系統框圖如下:
圖1. 系統框圖 |
其中web應用服務器爲tomcat4.1,數據庫服務器爲oracle10g。
這個項目包括以下內容:
1) 用戶表T_USER:用於保存用戶的信息
2) 登錄頁面login.htm:讓用戶錄入用戶名和密碼
3) 用戶信息javaBean類UserBean:包括三個屬性,即用戶ID和用戶密碼及用戶名
4) 獲取數據庫連接類DSBean:獲取數據庫鏈接,以便操作數據庫
5) 用戶登錄處理頁面execute.jsp:將用戶id,用戶密碼和數據庫中的比較,產生結果頁面
6) 異常處理頁面error.jsp:當發生異常時轉入異常處理頁面,顯示人性化的錯誤信息
項目中各項部分的協作關係如下圖:
圖2. 系統中各部分的協作關係 創建數據庫
首先以system用戶登錄oracle數據庫,創建數據庫用戶:
用戶信息表T_USER,該包括三個字段,其表的結構如下:
以test用戶登錄數據庫,運行以下語句SQL,創建用戶信息表:
往表中插入兩條用戶信息:
創建項目工程 創建工程:File->New Project出現下面的界面:
項目取名爲loginPro,放置在D:/loginPro路徑中,一路按Next就可以了。 創建完項目工程後,在工程下創建一個Web模塊:File->New...->左邊樹選擇Web->雙擊右邊窗口的Web Module(WAR)項目->在彈出的窗口中點選Create empty Web Module,按Next->在彈出的窗口中按以下設置:
web模塊的名稱爲loginWeb,放置在項目路徑下的loginWeb子文件夾中,設置Servlet和JSP的版本。在設置完後直接點擊Finish完成Web模塊的創建。 特別提醒讀者,如果您開發的是Web項目,一定要創建Web模塊,只有這樣,在工程中開發的Java類在Rebuild後,JBuilderX纔會調用Ant工具,將編譯後的class文件同步到web模塊的WEB-INF目錄中。筆者曾經有一個朋友向我報怨說用JBuilder開發WEB程序很麻煩,原來他沒有在工程中創建Web模塊,每次更改類後,都不辭辛苦地將編譯後的類手工拷到到WEB應用的WEB-INF/classes目錄下,殊不知,金光大道已經開通,而自己還在羊腸小道里掙扎。 編寫類
本項目中包括兩個類,一個是用戶信息類UserBean.java,另一個是獲取數據庫連接類DSBean.java。下面我們來編寫這兩個類: 首先編寫UserBean.java類:File->New Class...彈出如下的窗口:
在類嚮導的窗口界面上錄入類的名字UserBean,包名默認的是項目的名稱,您可以更改其他更有意義的包名,我們簡單地接受默認的包名。按OK後,在編輯窗口中得到如下的類代碼:
下面我們給UserBean類添加3個屬性:在UserBean的編輯窗口的底部點擊Bean標籤頁->選擇Bean標籤下的Properties的子標籤頁->在Properties頁面中通過Add Property來添加類的屬性,點擊該按鈕彈出屬性窗口->在此窗口中添加屬性。 不過筆者以爲這種常規的給類添加屬性的方法比較笨拙,效率很低,您可以直接通過在類中鍵入全局變量,然後再按上面的步驟切換到Properties標籤頁,JBuilderX會自動將全局變量列在這個頁面中,通過鉤選Getter和Setter列中的複選框,變量的set和get方法就自動產生了,筆者在編寫程序的時候選擇採用這種方法。添加全局變量後,UserBean代碼如下(其中粗體紅色爲新增的代碼,下同):
切換到Properties頁面,鉤選所有的Getter和Setter
編寫好UserBean後我們再來編寫獲取數據連接的DSBean,在編寫這個類之前,因爲該類需要用到Oracle的JDBC包,所以我們需要將oracle JDBC的jar包加載到類庫中,再將其引入項目工程裏。 目前oracle最新的版本是oracle10g,如果您安裝了oracle10g,則JDBC包位於[ORACLE_HOME]/jdbc/lib/classes12.jar,如果您未安排數據庫,您可以到這兒下載JDBC驅動包,它是向下兼容的。假設我們已經將其下載到D:/extra目錄中,我們通過以下操作將其加載到JBuilderX的類庫中:Tools->點擊Configure Libraries彈出Configure Libraries窗口,如圖6,首先點擊Configure Libraries窗口左下方的New...彈出New Library Wizard窗口,在窗口中給該類取一個名字叫jdbcLib,再點擊該窗口的Add...按鈕彈出Select One or More Directories窗口,定位到D:/extra目錄,選取class12.jar,然後確認即可。
接下來我們需要在項目中引用類庫中這個新的jar包,這樣項目纔可以訪問這個JDBC的jar包:Project->Project Properties在彈出的窗口左邊的樹中選擇Paths,按照圖7的操作完成引用的任務:
需要指出的是,如果項目需要引用大量的外部jar包,則可以將這些jar包組織到一個目錄下,然後將整個目錄加入到類庫,在項目工程中引用該目錄對應的類庫名就可以在項目中調用這些包了。當Rebuild項目時,JBuilderX還會將這些包同步到WEB應用的目錄中。 現在萬事俱備了,我們開始編寫DSBean.java:
我的數據庫裝在IP爲192.168.0.189的機器上,數據庫的SID是ora9i,讀者在編寫時必須根據您的數據庫的具體情況作相應的更改。 編寫完這兩個類後,我們可以在項目工程面板中右擊loginPro.jpx,選擇Rebuild,來編譯這兩個類,編譯完後的類不但會輸出到D:/loginPro/classes目錄下,同時還將同步到D:/loginPro/loginWeb/WEB-INF/classes目錄中,並且將會將項目中引用的外部包拷貝一份到D:/loginPro/loginWeb/WEB-INF/lib目錄下。值得注意的是,如果用Make命令來編譯,則類只會輸出到D:/loginPro/classes中,而不會同步到D:/loginPro/loginWeb/WEB-INF/classes目錄。如果您對J2EE的web目錄結構不太清楚,請閱讀這篇文章。 登錄頁面和處理頁面 編寫用戶登錄的頁面login.htm:File->New File...彈出以下對話框:
在編輯窗口鍵入以下的頁面代碼:
該登錄頁面接受用戶輸入的用戶id和密碼,提交給execute.jsp頁面處理,下面我們來編寫execute.jsp:File->New...->在Object Gallery窗口中左邊的樹中選擇Web->在右邊窗口中雙擊JavaServer Page圖標將彈出如下的對話框:
在該對話框中的Name中鍵入JSP頁面的名字:execute,點擊Next,在彈出的頁面中再點擊Next,進入嚮導的第3步,在這步中,允許您設置頁面引用的JavaBean:
點擊OK後,loginpro.UserBean類被定義爲該頁面的一個JavaBean,其id默認名爲bean0,我們將其改爲userBean,列表中還允許您指定這個JavaBean的作用域,我們選擇session。直接點擊Finish得到execute.jsp文件的代碼:
需要指出的是<jsp:setProperty name="userBean" property="*" />以參數名匹配的方式接收客戶端發送過來的參數值,在這裏,當login.htm提交後,userBean的userID和password兩個變量的值將被設置爲login.htm頁面表單中兩個輸入框的值。 接收到客戶端的值後,程序將其和數據庫中T_USER表中的記錄作比較,以便查明是否是合法用戶,現在我們給execute.jsp添加代碼,完成這些處理工作:
我們只是簡單地將userID和password的值發送到數據庫中進行比較,在真正的應用中,一定事先要檢查userID和password的值是否有單引號('),如果有,必須將其轉換成兩個單引號(‘'),否則將產生安全漏洞問題,有興趣的朋友可以看看《Sql語句密碼驗證的安全漏洞》這篇文章。 最後的一個JSP是處理錯誤和異常的error.jsp,它的代碼如下:
當execute.jsp發現數據庫操作或其他的異常時,將會跳轉到該錯誤處理頁面,打印出可讀性強的錯誤信息。 由於JBuilderX對頁面可視化的支持不強,您也可以在Dreamweaver中完成HTML及JSP可視化內容的開發,而在JBuilderX中完成邏輯處理部分的開發,畢竟這個世界永遠需要協作。 在JBuilderX中運行WEB程序
至此我們已經完成了項目中所有程序的開發工作,下面我們將在JBuilderX中運行該WEB程序。在運行程序之前,必須保證已經設置了WEB服務器。Project->Project Properties...->在彈出窗口左邊樹中設置Server:
更進一步,我們將不在JBuilderX中運行Tomcat測試,而是通過外部的Tomcat來測試,否則當JBuilderX開啓測試的WEB服務後會給更改程序帶來了不便。關於tomcat配置討論已經超出了本文範圍,您可以到這兒瞭解配置過程。爲了簡單,本文將在JBuilderX環境中完成測試。 在編輯窗口中鼠標右擊login.htm的標籤,選擇Web Run using "execute":
JBuilderX將自動完成WEB配置信息的設置並在8080端口啓動WEB服務,login.htm登錄頁面展示出來接受用戶的錄入,我們以zhangshang/123456登錄:
如果此時數據庫還沒有啓動則execute.jsp轉到error.jsp,錯誤頁面輸出以下內容:
在保證數據庫啓動及連接正常後,將得到正確登錄的頁面:
您也可以啓動IE,在IE的地址欄中鍵入正確的地址來運行程序。 |
一些常見問題的解決方法
在使用JBuilderX開發項目過程中,您可能會碰到一些小麻煩,在這裏我將介紹兩個常見的經常影響開發者情緒的問題及其解決方法。
1、編輯界面不支持中文:您在編輯界面中鍵入的中文會變成一串不可識別的"口口口",這個問題好象只出現在JBuilderX版本中,但也不一定會在每臺機器上都發生。有一次,我的一個同事的JBuilderX就發生了這種情況,後來我幫其更改了JBuilderX的配置文件C:/Documents and Settings/Administrator/.primetimeX/user_zh.properties中的設置信息,才解決了這個問題,具體解決方法,您可以參考borland網站的這篇文章。
2、 光標錯位:這個問題是JBuilder開發工具的一個頑疾,每個JBuilder版本都存在這個問題(borland這種抱殘守缺,矢志不移的精神讓我納悶,同時也很敬佩)。解決的方法很簡單,對於低版本的JBuilder您可能將字體設置爲宋體就可以了,但在JBuilderX中,字體選擇下拉框中只列出兩種字體:Courier New和Lucida Sans Typewriter,沒有宋體,這是一個bug。但我們可能通過其它方法來曲線救國:Tools->Perferences...->點擊彈出窗口左邊的Color在右邊窗口的設置界面中列出了Java,HTML/XML,JSP及其他格式文件的編寫樣式,去除所有粗體格式的設置:
圖15. 設置代碼格式 |
如圖15,您可以在界面的右下角的編輯框中點選加粗的語句,然後取消Bold前面複選框的鉤。這樣就沒有光標錯位的問題了。
總結
Jbuilder之所以如此流行的原因是顯而易見的。由於其代碼編輯的質量和開發者效率的特點,Borland作爲開發者和數據庫工具供應商的聲譽異常顯赫。Borland主導着IDE市場。JavaPro和DevX的研究表明,Jbuilder一直是Java開發者最普遍採用的,並且大大超過其它同類產品的採用率。
本文以開發一個簡單的例子爲主線,向您介紹了用JBuilderX開發WEB項目的方方面面,並且適時地指出了開發中的一些實戰經驗和一些常見的問題。建議您在讀完本文後,自己再試着在JBuilderX環境中重複開發這個例子,畢竟紙上得來終覺淺,絕知此事要躬行。