




已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java 學(xué)習(xí)資料之一 制作: 劉晏 2/18/2019Borland公司的JBuilder是世界領(lǐng)先的Java開(kāi)發(fā)環(huán)境。目前最新版本JbuilderX是一個(gè)開(kāi)發(fā)企業(yè)級(jí)Java應(yīng)用的綜合性跨平臺(tái)環(huán)境,它在使JBuilder屢獲殊榮的性能上,增加了很多新的特性,從而成為目前最強(qiáng)大的 Java可視化開(kāi)發(fā)環(huán)境。本文將通過(guò)一個(gè)簡(jiǎn)單的WEB項(xiàng)目,使您快速進(jìn)入JBuilderX的殿堂。JBuilderX的功能極其豐富,本文不會(huì)也不可能面面俱到地介紹所有的功能,只會(huì)對(duì)涉及例子項(xiàng)目開(kāi)發(fā)的一些容易忽視或不容易掌握的功能展開(kāi)介紹,而對(duì)一些常見(jiàn)的功能將一點(diǎn)而過(guò),或不提及,相信您可以在項(xiàng)目開(kāi)發(fā)操作過(guò)程中自然掌握那些基本的功能。您也可以通過(guò)JBuilderX在線幫助文檔來(lái)了解和掌握這些內(nèi)容,推薦您閱讀help-JBuilder toturials中前4個(gè)基礎(chǔ)教程。項(xiàng)目介紹雖然JBuilderX可以用于開(kāi)發(fā)桌面、無(wú)線、applet等應(yīng)用程序,但80%以上的使用者用它開(kāi)發(fā)J2EE的WEB應(yīng)用程序,所以我設(shè)計(jì)了一個(gè)簡(jiǎn)單的WEB應(yīng)用項(xiàng)目,亦步亦趨地帶領(lǐng)您開(kāi)發(fā)出一個(gè)可以運(yùn)行的WEB應(yīng)用程序。這個(gè)WEB項(xiàng)目只包含一個(gè)用戶(hù)登錄的功能,其系統(tǒng)框圖如下: 圖1. 系統(tǒng)框圖 其中web應(yīng)用服務(wù)器為tomcat4.1,數(shù)據(jù)庫(kù)服務(wù)器為oracle10g。這個(gè)項(xiàng)目包括以下內(nèi)容:1) 用戶(hù)表T_USER:用于保存用戶(hù)的信息2) 登錄頁(yè)面login.htm:讓用戶(hù)錄入用戶(hù)名和密碼3) 用戶(hù)信息javaBean類(lèi)UserBean:包括三個(gè)屬性,即用戶(hù)ID和用戶(hù)密碼及用戶(hù)名4) 獲取數(shù)據(jù)庫(kù)連接類(lèi)DSBean:獲取數(shù)據(jù)庫(kù)鏈接,以便操作數(shù)據(jù)庫(kù)5) 用戶(hù)登錄處理頁(yè)面execute.jsp:將用戶(hù)id,用戶(hù)密碼和數(shù)據(jù)庫(kù)中的比較,產(chǎn)生結(jié)果頁(yè)面6) 異常處理頁(yè)面error.jsp:當(dāng)發(fā)生異常時(shí)轉(zhuǎn)入異常處理頁(yè)面,顯示人性化的錯(cuò)誤信息項(xiàng)目中各項(xiàng)部分的協(xié)作關(guān)系如下圖:圖2. 系統(tǒng)中各部分的協(xié)作關(guān)系 創(chuàng)建數(shù)據(jù)庫(kù)首先以system用戶(hù)登錄oracle數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)庫(kù)用戶(hù):create user test identified by test;grant connect,resource to test; 用戶(hù)信息表T_USER,該包括三個(gè)字段,其表的結(jié)構(gòu)如下:字段名類(lèi)型 注釋user_ID varchar2(10) 用戶(hù)IDuser_name varchar2(20) 用戶(hù)名password varchar2(30) 用戶(hù)密碼以test用戶(hù)登錄數(shù)據(jù)庫(kù),運(yùn)行以下語(yǔ)句SQL,創(chuàng)建用戶(hù)信息表:create table T_USER ( USER_ID VARCHAR2 (10) PRIMARY KEY, USER_NAME VARCHAR2(20), PASSWORD VARCHAR2(30)/往表中插入兩條用戶(hù)信息:insert into T_USER values(zhangshang,張三,123456);insert into T_USER values(lisi,李四,abc);commit;創(chuàng)建項(xiàng)目工程創(chuàng)建工程:File-New Project出現(xiàn)下面的界面:圖3. 創(chuàng)建項(xiàng)目工程 項(xiàng)目取名為loginPro,放置在D:/loginPro路徑中,一路按Next就可以了。創(chuàng)建完項(xiàng)目工程后,在工程下創(chuàng)建一個(gè)Web模塊:File-New.-左邊樹(shù)選擇Web-雙擊右邊窗口的Web Module(WAR)項(xiàng)目-在彈出的窗口中點(diǎn)選Create empty Web Module,按Next-在彈出的窗口中按以下設(shè)置:圖4. 設(shè)置web模塊路徑和技術(shù)標(biāo)準(zhǔn) web模塊的名稱(chēng)為loginWeb,放置在項(xiàng)目路徑下的loginWeb子文件夾中,設(shè)置Servlet和JSP的版本。在設(shè)置完后直接點(diǎn)擊Finish完成Web模塊的創(chuàng)建。特別提醒讀者,如果您開(kāi)發(fā)的是Web項(xiàng)目,一定要?jiǎng)?chuàng)建Web模塊,只有這樣,在工程中開(kāi)發(fā)的Java類(lèi)在Rebuild后,JBuilderX才會(huì)調(diào)用Ant工具,將編譯后的class文件同步到web模塊的WEB-INF目錄中。筆者曾經(jīng)有一個(gè)朋友向我報(bào)怨說(shuō)用JBuilder開(kāi)發(fā)WEB程序很麻煩,原來(lái)他沒(méi)有在工程中創(chuàng)建Web模塊,每次更改類(lèi)后,都不辭辛苦地將編譯后的類(lèi)手工拷到到WEB應(yīng)用的WEB-INFclasses目錄下,殊不知,金光大道已經(jīng)開(kāi)通,而自己還在羊腸小道里掙扎。編寫(xiě)類(lèi)本項(xiàng)目中包括兩個(gè)類(lèi),一個(gè)是用戶(hù)信息類(lèi)UserBean.java,另一個(gè)是獲取數(shù)據(jù)庫(kù)連接類(lèi)DSBean.java。下面我們來(lái)編寫(xiě)這兩個(gè)類(lèi):首先編寫(xiě)UserBean.java類(lèi):File-New Class.彈出如下的窗口:圖5. 編寫(xiě)類(lèi)向?qū)?在類(lèi)向?qū)У拇翱诮缑嫔箱浫腩?lèi)的名字UserBean,包名默認(rèn)的是項(xiàng)目的名稱(chēng),您可以更改其他更用意義的包名,我們簡(jiǎn)單地接受默認(rèn)的包名。按OK后,在編輯窗口中得到如下的類(lèi)代碼:package loginpro;public class UserBean public UserBean() 下面我們給UserBean類(lèi)添加3個(gè)屬性:在UserBean的編輯窗口的底部點(diǎn)擊Bean標(biāo)簽頁(yè)-選擇Bean標(biāo)簽下的Properties的子標(biāo)簽頁(yè)-在Properties頁(yè)面中通過(guò)Add Property來(lái)添加類(lèi)的屬性,點(diǎn)擊該按鈕彈出屬性窗口-在此窗口中添加屬性。不過(guò)筆者以為這種常規(guī)的給類(lèi)添加屬性的方法比較笨拙,效率很低,您可以直接通過(guò)在類(lèi)中鍵入全局變量,然后再按上面的步驟切換到Properties標(biāo)簽頁(yè),JBuilderX會(huì)自動(dòng)將全局變量列在這個(gè)頁(yè)面中,通過(guò)鉤選Getter和Setter列中的復(fù)選框,變量的set和get方法就自動(dòng)產(chǎn)生了,筆者在編寫(xiě)程序的時(shí)候選擇采用這種方法。添加全局變量后,UserBean代碼如下(其中粗體紅色為新增的代碼,下同):package loginpro;public class UserBean private String userID;private String userName;private String password;public UserBean() 切換到Properties頁(yè)面,鉤選所有的Getter和Setter切換回代碼頁(yè)面后,屬性的get和set方法都自動(dòng)生成了:.public class UserBean.public String getPassword() return password; public String getUserID() return userID;public String getUserName() return userName;public void setUserName(String userName) this.userName = userName;public void setUserID(String userID)this.userID = userID;public void setPassword(String password)this.password = password; 編寫(xiě)好UserBean后我們?cè)賮?lái)編寫(xiě)獲取數(shù)據(jù)連接的DSBean,在編寫(xiě)這個(gè)類(lèi)之前,因?yàn)樵擃?lèi)需要用到Oracle的JDBC包,所以我們需要將oracle JDBC的jar包加載到類(lèi)庫(kù)中,再將其引入項(xiàng)目工程里。目前oracle最新的版本是oracle10g,如果您安裝了oracle10g,則JDBC包位于ORACLE_HOMEjdbclibclasses12.jar,如果您未安排數(shù)據(jù)庫(kù),您可以到這兒下載JDBC驅(qū)動(dòng)包,它是向下兼容的。假設(shè)我們已經(jīng)將其下載到D:extra目錄中,我們通過(guò)以下操作將其加載到JBuilderX的類(lèi)庫(kù)中:Tools-點(diǎn)擊Configure Libraries彈出Configure Libraries窗口,如圖6,首先點(diǎn)擊Configure Libraries窗口左下方的New.彈出New Library Wizard窗口,在窗口中給該類(lèi)取一個(gè)名字叫jdbcLib,再點(diǎn)擊該窗口的Add.按鈕彈出Select One or More Directories窗口,定位到D:extra目錄,選取class12.jar,然后確認(rèn)即可。圖6. 添加新類(lèi)到JBuilderX類(lèi)庫(kù)中 接下來(lái)我們需要在項(xiàng)目中引用類(lèi)庫(kù)中這個(gè)新的jar包,這樣項(xiàng)目才可以訪問(wèn)這個(gè)JDBC的jar包:Project-Project Properties在彈出的窗口左邊的樹(shù)中選擇Paths,按照?qǐng)D7的操作完成引用的任務(wù):圖7. 添加jdbc的jar包到項(xiàng)目中 需要指出的是,如果項(xiàng)目需要引用大量的外部jar包,則可以將這些jar包組織到一個(gè)目錄下,然后將整個(gè)目錄加入到類(lèi)庫(kù),在項(xiàng)目工程中引用該目錄對(duì)應(yīng)的類(lèi)庫(kù)名就可以在項(xiàng)目中調(diào)用這些包了。當(dāng)Rebuild項(xiàng)目時(shí),JBuilderX還會(huì)將這些包同步到WEB應(yīng)用的目錄中。現(xiàn)在萬(wàn)事俱備了,我們開(kāi)始編寫(xiě)DSBean.java:package loginpro;import java.sql.*;public class DSBean public static Connection getConnection() throws SQLExceptiontryClass.forName(oracle.jdbc.driver.OracleDriver);catch (ClassNotFoundException ex)System.out.println(數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序沒(méi)有找到。); return DriverManager.getConnection(jdbc:oracle:thin:192.168.0.189:1521:ora9i, test, test); 我的數(shù)據(jù)庫(kù)裝在IP為192.168.0.189的機(jī)器上,數(shù)據(jù)庫(kù)的SID是ora9i,讀者在編寫(xiě)時(shí)必須根據(jù)您的數(shù)據(jù)庫(kù)的具體情況作相應(yīng)的更改。編寫(xiě)完這兩個(gè)類(lèi)后,我們可以在項(xiàng)目工程面板中右擊loginPro.jpx,選擇Rebuild,來(lái)編譯這兩個(gè)類(lèi),編譯完后的類(lèi)不但會(huì)輸出到D:loginProclasses目錄下,同時(shí)還將同步到D:loginProloginWebWEB-INFclasses目錄中,并且將會(huì)將項(xiàng)目中引用的外部包拷貝一份到D:loginProloginWebWEB-INFlib目錄下。值得注意的是,如果用Make命令來(lái)編譯,則類(lèi)只會(huì)輸出到D:loginProclasses中,而不會(huì)同步到D:loginProloginWebWEB-INFclasses目錄。對(duì)J2EE的web目錄結(jié)構(gòu)的探討超越本文內(nèi)容,請(qǐng)自行閱讀相關(guān)資料。登錄頁(yè)面和處理頁(yè)面編寫(xiě)用戶(hù)登錄的頁(yè)面login.htm:File-New File.彈出以下對(duì)話框:圖8. 創(chuàng)建login.htm 在編輯窗口鍵入以下的頁(yè)面代碼:htmlbodyform name=form1 method=post action=execute.jspinput type=text name=userIDinput type=text name=passwordinput type=submit name=Submit value=提交/form/body/html該登錄頁(yè)面接受用戶(hù)輸入的用戶(hù)id和密碼,提交給execute.jsp頁(yè)面處理,下面我們來(lái)編寫(xiě)execute.jsp:File-New.-在Object Gallery窗口中左邊的樹(shù)中選擇Web-在右邊窗口中雙擊JavaServer Page圖標(biāo)將彈出如下的對(duì)話框:圖9. JSP頁(yè)面向?qū)?在該對(duì)話框中的Name中鍵入JSP頁(yè)面的名字:execute,點(diǎn)擊Next,在彈出的頁(yè)面中再點(diǎn)擊Next,進(jìn)入向?qū)У牡?步,在這步中,允許您設(shè)置頁(yè)面引用的JavaBean:圖10. 設(shè)置JSP頁(yè)面引用的JavaBean 點(diǎn)擊OK后,loginpro.UserBean類(lèi)被定義為該頁(yè)面的一個(gè)JavaBean,其id默認(rèn)名為bean0,我們將其改為userBean,列表中還允許您指定這個(gè)JavaBean的作用域,我們選擇session。直接點(diǎn)擊Finish得到execute.jsp文件的代碼:% page contentType=text/html; charset=GBK %htmlheadtitleexecute/title/headjsp:useBean id=userBean scope=session class=loginpro.UserBean /jsp:setProperty name=userBean property=* /body bgcolor=#ffffff/body/html需要指出的是jsp:setProperty name=userBean property=* /以參數(shù)名匹配的方式接收客戶(hù)端發(fā)送過(guò)來(lái)的參數(shù)值,在這里,當(dāng)login.htm提交后userBean的userID和password兩個(gè)將被設(shè)置為login.htm頁(yè)面表單中兩個(gè)輸入框的值。接收到客戶(hù)端的值后,程序?qū)⑵浜蛿?shù)據(jù)庫(kù)中T_USER表中的記錄作比較,以便查明是否是合法用戶(hù),現(xiàn)在我們給execute.jsp添加代碼,完成這些處理工作:% page contentType=text/html; charset=GBK errorPage=error.jsp% page import=java.sql.*% page import=loginpro.DSBean%htmlhead.jsp:setProperty name=userBean property=* /body bgcolor=#ffffff% Connection conn = DSBean.getConnection();String sqlStr = select count(*) from T_USER where USER_ID=? and password=?; PreparedStatement pStat = conn.prepareStatement(sqlStr); pStat.setString(1,userBean.getUserID(); pStat.setString(2,userBean.getPassword(); ResultSet rs = pStat.executeQuery(); if(rs.next() & rs.getInt(1) = 1)out.print(您是合法的用戶(hù),歡迎您的到來(lái)!); else out.print(密碼不對(duì),或者您還沒(méi)有注冊(cè)為系統(tǒng)的用戶(hù));%body bgcolor=#ffffff.我們只是簡(jiǎn)單地將userID和password的值發(fā)送到數(shù)據(jù)庫(kù)中進(jìn)行比較,在真正的應(yīng)用中,一定事先要檢查userID和password的值是否有單引號(hào)(),如果有,必須將其轉(zhuǎn)換成兩個(gè)單引號(hào)(),否則將產(chǎn)生安全漏洞問(wèn)題,有興趣的朋友可以在網(wǎng)上查找相關(guān)資料。最后的一個(gè)JSP是處理錯(cuò)誤和異常的error.jsp,它的代碼如下:% page contentType=text/html; charset=GBK isErrorPage=true % page import=java.sql.SQLException%htmlheadtitleerror/title/headbody bgcolor=#ffffff% if( exception instanceof SQLException ) out.println(發(fā)生了數(shù)據(jù)庫(kù)操作異常,請(qǐng)和系統(tǒng)管理員聯(lián)系); else out.println(發(fā)生了不可知的異常,請(qǐng)和系統(tǒng)管理員聯(lián)系); %/body/html當(dāng)execute.jsp發(fā)現(xiàn)數(shù)據(jù)庫(kù)操作或其他的異常時(shí),將會(huì)跳轉(zhuǎn)到該錯(cuò)誤處理頁(yè)面,打印出可讀性強(qiáng)的錯(cuò)誤信息。由于JBuilderX對(duì)頁(yè)面可視化的支持不強(qiáng),您也可以在Dreamweaver中完成HTML及JSP可視化內(nèi)容的開(kāi)發(fā),而在JBuilderX中完成邏輯處理部分的開(kāi)發(fā),畢竟這個(gè)世界永遠(yuǎn)需要協(xié)作。在JBuilderX中運(yùn)行WEB程序至此我們已經(jīng)完成了項(xiàng)目中所有程序的開(kāi)發(fā)工作,下面我們將在JBuilderX中運(yùn)行該WEB程序。在運(yùn)行程序之前,必須保證已經(jīng)設(shè)置了WEB服務(wù)器。Project-Project Properties.-在彈出窗口左邊樹(shù)中設(shè)置Server:在Single Server for all services in project選項(xiàng)里選擇Tomcat4.1,其默認(rèn)的設(shè)置是Tomcat4.0。如果您給JBuilderX配置了其他的WEB服務(wù)器,如WebSphere或WebLogic,它們都會(huì)列在該下拉框中。但是,我將不擬對(duì)此展開(kāi)討論,一個(gè)主要原因是,雖然JBuilderX允許您在開(kāi)發(fā)環(huán)境中設(shè)置并運(yùn)行這些服務(wù),但由于這些重量級(jí)的WEB服務(wù)開(kāi)啟或關(guān)閉都需要很長(zhǎng)的時(shí)間,給測(cè)試帶來(lái)了很大的不便。所以我們一般的作法是先在輕量級(jí)的WEB服務(wù)(一般是Tomcat中)中完成測(cè)試,再將其部署到真正的企業(yè)級(jí)WEB服務(wù)器中去。更進(jìn)一步,我們將不在JBuilderX中運(yùn)行Tomcat測(cè)試,而是通過(guò)外部的Tomcat來(lái)測(cè)試,否則當(dāng)JBuilderX開(kāi)啟測(cè)試的WEB服務(wù)后會(huì)給更改程序帶來(lái)了不便。關(guān)于tomcat配置討論已經(jīng)超出了本文范圍,有興趣的朋友可以自行研究。為了簡(jiǎn)單,本文將在JBuilderX環(huán)境中完成測(cè)試。在編輯窗口中鼠標(biāo)右擊login.htm的標(biāo)簽,選擇Web Run using “execute”:圖11. 運(yùn)行WEB服務(wù) JBuilderX將自動(dòng)完成WEB配置信息的設(shè)置并在8080端口啟動(dòng)WEB服務(wù),login.htm登錄頁(yè)面展示出來(lái)接受用戶(hù)的錄入,我們以zhangshang/123456登錄:圖12. 用戶(hù)登錄 如果此時(shí)數(shù)據(jù)庫(kù)還沒(méi)有啟動(dòng)則execute.jsp轉(zhuǎn)到error.jsp,錯(cuò)誤頁(yè)面輸出以下內(nèi)容:圖13. 錯(cuò)誤頁(yè)面 在保證數(shù)據(jù)庫(kù)啟動(dòng)及連接正常后,將得到正確登錄的頁(yè)面:圖14. 登錄成功的頁(yè)面 您也可以啟動(dòng)IE,在IE的地址欄中鍵入正確的地址來(lái)運(yùn)行程序。一些常見(jiàn)問(wèn)題的解決方法在使用JBuilderX開(kāi)發(fā)項(xiàng)目過(guò)程中,您可能會(huì)碰到一些小麻煩,在這里我將介紹兩個(gè)常見(jiàn)的經(jīng)常影響開(kāi)發(fā)者情緒的問(wèn)題及其解決方法。1、編輯界面不支持中文:您在編輯界面中鍵入的中文會(huì)變成一串不可識(shí)別的“口口口”,這個(gè)問(wèn)題好象
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工跳神活動(dòng)方案
- 品質(zhì)月活動(dòng)方案
- 團(tuán)建吃喝活動(dòng)方案
- 呼吸科迎新春活動(dòng)方案
- 國(guó)慶尋訪活動(dòng)方案
- 四零服務(wù)活動(dòng)方案
- 圖文引流活動(dòng)方案
- 團(tuán)體學(xué)習(xí)活動(dòng)方案
- 員工趣味活動(dòng)方案
- 團(tuán)建幫扶活動(dòng)方案
- NPI流程管理制度
- 2025 年湖北省中考生物地理試卷
- 荊州中學(xué)2024-2025學(xué)年高二下學(xué)期6月月考語(yǔ)文答案(定)
- 2025年高考語(yǔ)文新課標(biāo)1卷試卷及答案(新課標(biāo)Ⅰ卷)
- 公司年中會(huì)議策劃方案
- 計(jì)算物理面試題及答案
- JG/T 455-2014建筑門(mén)窗幕墻用鋼化玻璃
- 酒吧員工勞務(wù)合同范本
- 法人變更免責(zé)協(xié)議書(shū)
- 美洲文化課件教學(xué)
- 2025屆重慶市巴川中學(xué)生物七下期末統(tǒng)考試題含解析
評(píng)論
0/150
提交評(píng)論