黃禮斌基于java網(wǎng)頁瀏覽器的應(yīng)用實(shí)現(xiàn)
《黃禮斌基于java網(wǎng)頁瀏覽器的應(yīng)用實(shí)現(xiàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《黃禮斌基于java網(wǎng)頁瀏覽器的應(yīng)用實(shí)現(xiàn)(19頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 計(jì)算機(jī)專業(yè)實(shí)習(xí)報(bào)告 實(shí)習(xí)題目: 基于Java的網(wǎng)頁瀏覽器設(shè)計(jì)與開發(fā) 姓 名 : 黃禮斌 專 業(yè) : 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí) : 083211 學(xué) 號(hào) : 08321113 指導(dǎo)老師 : 吳建東 2011年11月28日 [實(shí)習(xí)時(shí)間] 2011年11月21日到11月27日 [實(shí)習(xí)地點(diǎn)] 軟件樓601 [實(shí)習(xí)目的] 通過理論聯(lián)系實(shí)際,鞏固所學(xué)的知識(shí),
2、提高處理實(shí)際問題的能力,為順利畢業(yè)進(jìn)行做好充分的準(zhǔn)備,并為自己能順利與社會(huì)環(huán)境接軌做準(zhǔn)備。 [實(shí)習(xí)內(nèi)容] 基于Java的網(wǎng)頁瀏覽器設(shè)計(jì)與開發(fā) 1、程序開發(fā)的基礎(chǔ) 3 1.1 Java技術(shù) 3 1.1.1 Java概述 3 1.1.2 java平臺(tái)簡介 3 1.1.3JDIC項(xiàng)目簡介 4 1.2 實(shí)現(xiàn)目標(biāo) 4 1.3開發(fā)環(huán)境 5 2、系統(tǒng)的總體分析與設(shè)計(jì) 6 2.1 需求分析 6 2.2 系統(tǒng)結(jié)構(gòu)與設(shè)計(jì)分析 6 2.2.1 響應(yīng)模式 6 2.2.2 結(jié)構(gòu)分析 6 2.3 功能結(jié)構(gòu)圖 7 3、系統(tǒng)功能與實(shí)現(xiàn) 8 3.1 核心技術(shù)
3、8 3.1.1 JDIC項(xiàng)目實(shí)現(xiàn)瀏覽器組件 8 3.1.2 收藏夾的保存與裝載 8 3.1.3阻止IE打開彈出窗口 9 3.2菜單欄的實(shí)現(xiàn) 9 3.2.1 文件菜單 9 3.2.2 轉(zhuǎn)到菜單 9 3.2.3 調(diào)整菜單 10 3.3 工具欄的實(shí)現(xiàn) 10 3.4 地址欄的實(shí)現(xiàn) 11 3.5 瀏覽器選項(xiàng)卡的實(shí)現(xiàn) 12 3.5.1 繼承擴(kuò)展瀏覽器組件 12 3.5.2 編寫瀏覽器面板 13 3.5.3 編寫瀏覽器選項(xiàng)卡面板 13 3.5.4編寫瀏覽器組件監(jiān)聽器 13 3.6 收藏夾的實(shí)現(xiàn) 13 3.6.1 添加到收藏夾 13 3.6.2 整理收藏夾 14 4、 測
4、試 15 4.1 測試與調(diào)試的基本概念 15 4.2 測試時(shí)間 15 4.3 軟件測試的內(nèi)容 16 5、實(shí)習(xí)體會(huì) 17 1、程序開發(fā)的基礎(chǔ) 1.1 Java技術(shù) 1.1.1 Java概述 Java是一個(gè)廣泛使用的編程語言,它基于Java虛擬機(jī)技術(shù),從而實(shí)現(xiàn)跨平臺(tái)。它簡單,面向?qū)ο?不依賴與機(jī)器的結(jié)構(gòu),具有可移植性,安全性,并且提供了并發(fā)的機(jī)制,具有很高的性能。其次,它最大限度的利用了網(wǎng)絡(luò),Java的小應(yīng)用程序(applet)可在網(wǎng)絡(luò)上傳輸而不受CPU和環(huán)境的限制,另外,Java還提供了豐富的類庫,使程序設(shè)計(jì)者可以很方便地建立自己的系統(tǒng)。 Java平臺(tái)是一種純軟件平臺(tái),它
5、有三個(gè)版本Java SE、JavaEE、Java ME。 JavaSE允許開發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實(shí)時(shí)環(huán)境中使用的Java 應(yīng)用程序。Java SE還包含了支持Java Web服務(wù)開發(fā)的類,并為Java EE這個(gè)版本提供基礎(chǔ)。JavaEE下有很多流行的開發(fā)框架,像Struts、Spring、Hibernate這種流行的所謂SSH組合等。JavaME應(yīng)用領(lǐng)域像各種移動(dòng)設(shè)備和嵌入式設(shè)備,比如:手機(jī)、PDA、電視機(jī)頂盒和打印機(jī)。 1.1.2 java平臺(tái)簡介 Java平臺(tái)版本 Java平臺(tái)版本主要有:J2EE(企業(yè)版本)、J2SE(標(biāo)準(zhǔn)版本)、J2ME(迷你版本)。這三個(gè)版
6、本有不同的用途,J2EE主要用于分布式的網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng);J2SE主要用于桌面應(yīng)用軟件的編程;J2ME主要應(yīng)用于嵌入是系統(tǒng)開發(fā),如手機(jī)和PDA的編程。 Java平臺(tái)的組成 Java平臺(tái)主要是由一個(gè)compiler(編譯器),一個(gè)運(yùn)行環(huán)境(runtime environment),和一個(gè)核心的API組成。 1、JVM(Java虛擬機(jī)):Java程序并不是直接在本地機(jī)器的操作系統(tǒng)上執(zhí)行,而是通過JVM解釋成本地的機(jī)器語言,其優(yōu)點(diǎn)是可以保證Java代碼在Windows、Linux、Solaris等操作系統(tǒng)上的移植性,其代價(jià)是執(zhí)行速度比C代碼要慢??紤]
7、到軟件越來越龐大,而計(jì)算機(jī)硬件性能越來越快,而且WEB應(yīng)用的發(fā)展,其代價(jià)是可接受的。 2、JDK(Java Development Kit):Java平臺(tái)開發(fā)包;JSDK(Java 2 Software Development Kit):Java 2平臺(tái)開發(fā)包。目前普遍采用J2SDK。 3、JRE(Java Runtime Environment):Java運(yùn)行環(huán)境,一般情況下已集成到J2SDK中,但如果用戶只是執(zhí)行Java程序,而不進(jìn)行Java代碼的開發(fā),則只需安裝JRE。 Java環(huán)境變量的設(shè)置 安裝完J2SDK之后,需要設(shè)置環(huán)境變量,方法如下:控制面板
8、 -〉高級(jí)設(shè)置 -〉環(huán)境變量 -〉系統(tǒng)變量 -〉path里添加一個(gè)路徑。這個(gè)路徑是安裝J2SDK的bin文件夾的路徑。 1.1.3JDIC項(xiàng)目簡介 JDesktop Integration Components,或JDIC,是一個(gè)給Java開發(fā)人員提供通過交差平臺(tái)API存取本地特性的包羅萬象的項(xiàng)目。該項(xiàng)目由Sun的Desktop組啟動(dòng),目的是讓Java應(yīng)用能更好地和它們所運(yùn)行的桌面環(huán)境集成。為了能從開發(fā)人員那里得到想要的特性的快速反饋,他們將JDIC做成了開源項(xiàng)目。盡管目前沒有計(jì)劃,但JDIC團(tuán)隊(duì)正考慮把JDIC的特征加入Java核心類庫的未來版本中去。 JDIC分為五個(gè)部分和
9、一個(gè)孵化中的項(xiàng)目: 桌面:為了打開、編輯和用email郵寄文件來打開桌面程序; 文件類型:設(shè)置桌面文件類型關(guān)聯(lián); 瀏覽器:在AWT畫布上嵌入本地瀏覽器(Internet Explorer或者M(jìn)ozilla); 包裝器:把Java Web Start程序轉(zhuǎn)換成本地安裝程序的命令行工具; 托盤API:支持系統(tǒng)托盤圖標(biāo)和彈出式菜單; lSaverBeans:Java中的系統(tǒng)屏幕保護(hù); 1.2 實(shí)現(xiàn)目標(biāo) 本項(xiàng)目是網(wǎng)頁瀏覽器,包括五個(gè)部分,菜單欄模塊,工具欄模塊,地址欄模塊,瀏覽器選項(xiàng)卡模塊以及收藏夾模塊。 1菜單欄模塊內(nèi)容包括文件菜單,轉(zhuǎn)到菜單,調(diào)整菜單和收藏夾菜單。主要是通過
10、菜單欄的操作實(shí)現(xiàn)網(wǎng)頁的前進(jìn),后退,停止,刷新和轉(zhuǎn)到功能,還包括收藏夾的新建與整理。 2。.工具欄的功能則是實(shí)現(xiàn)常用的操作,通過點(diǎn)擊工具圖標(biāo)來實(shí)現(xiàn)菜單欄中所有的操作。 3.地址欄模塊則用來接收用戶輸入的網(wǎng)站地址,然后將該地址傳給瀏覽器組件,呈現(xiàn)指定的網(wǎng)頁。 4.瀏覽器選項(xiàng)卡模塊實(shí)現(xiàn)在同一個(gè)窗體中顯示多個(gè)頁面。 5.收藏夾模塊是本設(shè)計(jì)中最重要的一部分,包括整理收藏夾菜單和添加收藏夾菜單,可在程序運(yùn)行的過程中根據(jù)用戶保存的內(nèi)容,填充收藏夾的內(nèi)容,且在網(wǎng)頁瀏覽器重新啟動(dòng)的情況下依舊保留有上次保存的網(wǎng)頁。 1.3開發(fā)環(huán)境 以下版本是本次使用: 操作系統(tǒng): Windows XP Jav
11、a虛擬機(jī): JDK1.6 開發(fā)工具: MyEclipse5.5 2、系統(tǒng)的總體分析與設(shè)計(jì) 2.1 需求分析 本模塊要實(shí)現(xiàn)的功能模塊包括:菜單欄模塊,工具欄模塊,地址欄模塊,瀏覽器選項(xiàng)卡模塊以及收藏夾模塊。 1.菜單欄模塊內(nèi)容包括文件菜單,轉(zhuǎn)到菜單,調(diào)整菜單和收藏夾菜單。主要是通過菜單欄的操作實(shí)現(xiàn)網(wǎng)頁的前進(jìn),后退,停止,刷新和轉(zhuǎn)到功能,還包括收藏夾的新建與整理。 2.工具欄的功能則是實(shí)現(xiàn)常用的操作,通過點(diǎn)擊工具圖標(biāo)來實(shí)現(xiàn)菜單欄中所有的操作。 3.地址欄模塊則用來接收用戶輸入的網(wǎng)站地址,然后將該地址傳給瀏覽器組件,呈現(xiàn)指定的網(wǎng)頁。 4.瀏覽器選項(xiàng)卡模塊實(shí)現(xiàn)在同一個(gè)窗體中顯示多個(gè)
12、頁面。 5.收藏夾模塊是本設(shè)計(jì)中最重要的一部分,包括整理收藏夾菜單和添加收藏夾菜單,可在程序運(yùn)行的過程中根據(jù)用戶保存的內(nèi)容,填充收藏夾的內(nèi)容,且在網(wǎng)頁瀏覽器重新啟動(dòng)的情況下依舊保留有上次保存的網(wǎng)頁。 2.2 系統(tǒng)結(jié)構(gòu)與設(shè)計(jì)分析 2.2.1 響應(yīng)模式 用戶在地址欄輸入一個(gè)URL,單擊“轉(zhuǎn)到”按鈕,請(qǐng)求發(fā)出,瀏覽器內(nèi)核進(jìn)行讀取識(shí)別,并通過特征提取模塊進(jìn)行特征比對(duì),按照網(wǎng)頁分類算法對(duì)網(wǎng)頁類別庫中的網(wǎng)頁中符合的網(wǎng)頁提取出來返回給用戶。 圖1 響應(yīng)模式 2.2.2 結(jié)構(gòu)分析 本模塊設(shè)計(jì)的瀏覽器,有菜單欄,工具欄,地址欄,頁面顯示區(qū),收藏夾。 它的主要特點(diǎn)有: 1基于IE內(nèi)核,采用多
13、窗口多線程工作方式,節(jié)約了系統(tǒng)資源,穩(wěn)定性好,不會(huì)像那樣因打開多窗口而使系統(tǒng)速度緩慢,甚至出現(xiàn)“程序沒有相應(yīng)“等現(xiàn)象。 2.對(duì)網(wǎng)頁自動(dòng)分類,這是它的特點(diǎn)。當(dāng)用戶在瀏覽網(wǎng)頁進(jìn)入一個(gè)從未到過的網(wǎng)站時(shí),很容易導(dǎo)致迷航,用戶先閱讀網(wǎng)頁才能判定該網(wǎng)頁是否是自己所感興趣的網(wǎng)頁。這樣,用戶把大量時(shí)間和精力花費(fèi)在不必要的網(wǎng)頁上,分散了用戶的注意力。 3. 提供類別導(dǎo)航功能。它將已分類的網(wǎng)站地址置入各類別中,用戶可以根據(jù)自己感興趣的主題進(jìn)行訪問和瀏覽。類別的跟新,修改,添加等維護(hù)一般由系統(tǒng)進(jìn)行,也可由用戶自己手動(dòng)維護(hù)。系統(tǒng)可以根據(jù)類別的更改而自行調(diào)整系統(tǒng)的分類結(jié)果。 2.3 功能結(jié)構(gòu)圖 以下是本模塊的
14、功能結(jié)構(gòu)圖: 圖2 功能結(jié)構(gòu) 3、系統(tǒng)功能與實(shí)現(xiàn) 瀏覽器的窗體是程序的主界面,它包括瀏覽指定的網(wǎng)站,收藏網(wǎng)站信息等業(yè)務(wù)。主要由菜單欄,工具欄,地址欄,瀏覽器選項(xiàng)卡和狀態(tài)欄組成。 3.1 核心技術(shù) 3.1.1 JDIC項(xiàng)目實(shí)現(xiàn)瀏覽器組件 瀏覽器組件API可以讓你訪問幾個(gè)瀏覽器事件以及在歷史記錄上的控制(向前,后退,刷新)。未來修訂的API版本希望能提供更多存取瀏覽器和任意裝載的文檔的功能。 在你的應(yīng)用里使用瀏覽器組件實(shí)在是非常容易: import org.jdesktop.jdic.browser.*; import .*; import javax.
15、swing.*; public class BrowserTest { public static void main(String[] args) throws Exception { WebBrowser browser = new WebBrowser(); browser.setURL(new URL("")); JFrame frame = new JFrame("Browser Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
16、 frame.getContentPane().add(browser); frame.pack(); frame.setSize(500,500); frame.setVisible(true); } } 正如你所看到的那樣,WebBrowser對(duì)象僅僅是一個(gè)你可以把它放入一個(gè)標(biāo)準(zhǔn)的Jframe中的AWT組件。Main方法的第一行創(chuàng)建了一個(gè)新的WebBrowser,第二行設(shè)置了你想顯示的URL。其他的代碼創(chuàng)建了一個(gè)frame,把瀏覽器加入其中,并使得frame可見 記住WebBrowser是個(gè)本地AWT
17、組件,因此你可能陷入與Swing結(jié)合的困境?;旌纤鼈兊膬蓚€(gè)規(guī)則是 1)不要讓Swing和AWT組件重疊和 2)在你的菜單上調(diào)用setLightWeightPopupEnabled(false)否則它們將消失在瀏覽器組件后邊。 3.1.2 收藏夾的保存與裝載 收藏夾模塊的功能可以將正在瀏覽的網(wǎng)址添加到收藏夾中,并且提供分類,通常的做法是將收藏夾的內(nèi)容存放在集合類中,如果程序關(guān)閉,收藏夾的內(nèi)容和分類將丟失,因?yàn)樗鼈儧]有被持久化。 將收藏夾持久化的方法有兩種: 持久化到數(shù)據(jù)庫 可以將收藏夾內(nèi)容全部保存到數(shù)據(jù)庫中,在程序關(guān)閉時(shí),收藏夾的內(nèi)容保存在數(shù)據(jù)庫而不在內(nèi)存中,這樣可
18、以避免數(shù)據(jù)丟失,在程序下次啟動(dòng)的時(shí)候,可以從數(shù)據(jù)庫中讀取收藏夾內(nèi)容從新顯示 持久化到文件中 另一種方法將收藏夾的內(nèi)容保存到一個(gè)數(shù)據(jù)文件中,例如”favorite.data”,這種方法保存收藏夾數(shù)據(jù)可以節(jié)省訪問數(shù)據(jù)庫的開銷,也可以隨瀏覽器模塊一同發(fā)布,既方便又節(jié)省資源。 3.1.3阻止IE打開彈出窗口 使用WebBrowser組件編寫的瀏覽器模塊,可以在本窗口中瀏覽各種信息,可以通過超級(jí)鏈接訪問其他網(wǎng)頁,如果某個(gè)超級(jí)連接要在新的窗體中打開網(wǎng)頁,那么這個(gè)網(wǎng)頁會(huì)默認(rèn)使用IE或操作系統(tǒng)默認(rèn)的瀏覽器打開,這就破壞了模塊的外觀,使本模塊處于可有可無的狀態(tài)。因此必須攔截這些需要在新窗體顯示的網(wǎng)
19、頁信息,本模塊繼承了WebBrowser組件實(shí)現(xiàn)了瀏覽器組件的Browser類,它從寫了父類的willOpenWindow()方法,在有需要顯示在新窗體的網(wǎng)頁信息時(shí),該方法會(huì)創(chuàng)建新的選項(xiàng)卡顯示這個(gè)網(wǎng)頁。 3.2菜單欄的實(shí)現(xiàn) 瀏覽器模塊的菜單欄幾乎容納了所有功能的操作連接,它用于整個(gè)瀏覽器模塊的導(dǎo)航,快速方便的執(zhí)行瀏覽操作,例如前進(jìn),后退,刷新等。 3.2.1 文件菜單 文件菜單包括”設(shè)置主頁”,”打印”,”退出”3個(gè)菜單項(xiàng),其中”設(shè)置主頁”將用戶輸入的網(wǎng)址信息創(chuàng)建為URL對(duì)象。如果創(chuàng)建URL對(duì)象時(shí)拋出異常,說明URL格式不標(biāo)準(zhǔn),將以對(duì)話框的形式提示用戶URL格式非法,
20、當(dāng)輸入格式正確時(shí),程序?qū)RL對(duì)象序列化到收藏夾得數(shù)據(jù)文件中。 單擊打印菜單時(shí),將調(diào)用工具欄上”打印”按鈕的doClick()方法,執(zhí)行按鈕的鼠標(biāo)單擊操作,程序會(huì)執(zhí)行按鈕的時(shí)間處理代碼。 單擊菜單欄的“退出”菜單項(xiàng)時(shí),菜單項(xiàng)的事件監(jiān)聽器將調(diào)用業(yè)務(wù)方法完成退出命令。在業(yè)務(wù)方法中執(zhí)行了System類的exit()方法退出Java虛擬機(jī),從而終止程序運(yùn)行。 3.2.2 轉(zhuǎn)到菜單 轉(zhuǎn)到菜單包含了瀏覽器的控制命令,這些命令包括”主頁”,”前進(jìn)””后退””停止””刷新”。這些控制命令,在菜單欄中也提供了相應(yīng)的操作按鈕,為減少代碼重復(fù),本模塊在這些菜單欄的事件處理中直接調(diào)用工具欄相應(yīng)按鈕的d
21、oClick()方法,執(zhí)行按鈕的業(yè)務(wù)代碼。 // 停止菜單項(xiàng)的業(yè)務(wù) private void stopMenuItemActionPerformed(java.awt.event.ActionEvent evt) { stopButton.doClick(); // 執(zhí)行停止按鈕的單擊方法 } // 刷新菜單項(xiàng)的業(yè)務(wù)方法 private void refreshMenuItemActionPerformed(java.awt.event.ActionEvent evt) { refreshButton.doClick(); // 執(zhí)行刷新按鈕的單擊方法 } // 后退菜單
22、項(xiàng)的業(yè)務(wù)方法 private void backMenuItemActionPerformed(java.awt.event.ActionEvent evt) { backButton.doClick(); // 執(zhí)行后退按鈕的單擊方法 } // 前進(jìn)菜單項(xiàng)的業(yè)務(wù)方法 private void forwardMenuItemActionPerformed(java.awt.event.ActionEvent evt) { forwardButton.doClick(); // 執(zhí)行前進(jìn)按鈕的單擊方法 } // 打印菜單項(xiàng)的業(yè)務(wù)方法 private void printMe
23、nuItemActionPerformed(java.awt.event.ActionEvent evt) { printButton.doClick(); // 執(zhí)行主頁按鈕的單擊方法 } 3.2.3 調(diào)整菜單 本模塊的網(wǎng)頁瀏覽器部分布置在一個(gè)選項(xiàng)卡組件中,選項(xiàng)卡的標(biāo)簽名稱為網(wǎng)頁的標(biāo)題命名,這樣用戶可以創(chuàng)建多個(gè)選項(xiàng)卡瀏覽更多的網(wǎng)站。 3.3 工具欄的實(shí)現(xiàn) 工具欄用于執(zhí)行常用的操作,網(wǎng)頁瀏覽器模塊的控制命令使用最頻繁,因此將瀏覽器的控制命令提取到工具欄中。工具欄上的每個(gè)按鈕都設(shè)置了文本提示,每個(gè)按鈕都添加了單獨(dú)的事件監(jiān)聽器,在不同的事件監(jiān)聽器中調(diào)用處理該按鈕業(yè)務(wù)的
24、方法。 編寫各個(gè)按鈕的事物處理方法,這些業(yè)務(wù)處理方法被不同按鈕的事件監(jiān)聽器調(diào)用。瀏覽器的控制按鈕的業(yè)務(wù)邏輯,基本通過調(diào)用Browser瀏覽器組件的方法實(shí)現(xiàn),例如print()方法可以執(zhí)行打印任務(wù), // 后退按鈕的事件處理方法 private void backButtonActionPerformed(java.awt.event.ActionEvent evt) { Browser browser = getSelBrowser(); if (browser.isBackEnabled()) { // 如果后退操作可行 browser.back(); // 執(zhí)行后退
25、 } } // 停止按鈕的事件處理方法 private void stopButtonActionPerformed(java.awt.event.ActionEvent evt) { Browser browser = getSelBrowser(); browser.stop(); // 執(zhí)行停止操作 } // 前進(jìn)按鈕的事件處理方法 private void forwardButtonActionPerformed(java.awt.event.ActionEvent evt) { Browser browser = getSelBrowser(); if (b
26、rowser.isForwardEnabled()) { // 如果前進(jìn)操作可行 browser.forward(); // 執(zhí)行前進(jìn)操作 } } // 刷新按鈕的事件處理方法 private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) { Browser browser = getSelBrowser(); browser.refresh(); // 執(zhí)行刷新操作 } // 主頁按鈕的事件處理方法 private void homePageButtonActionPerform
27、ed(java.awt.event.ActionEvent evt) { Browser browser = getSelBrowser(); browser.setURL(homePage); // 設(shè)置瀏覽器當(dāng)前網(wǎng)址 } 3.4 地址欄的實(shí)現(xiàn) 地址欄是網(wǎng)頁瀏覽器的重要功能,它接收用戶輸入的將要訪問的網(wǎng)站地址,然后將該地址傳送給瀏覽器組件,呈現(xiàn)指定的網(wǎng)頁內(nèi)容。網(wǎng)頁瀏覽器模塊的地址欄包含輸入網(wǎng)站URL地址的文本框和一個(gè)執(zhí)行瀏覽業(yè)務(wù)的“轉(zhuǎn)到”按鈕。當(dāng)用戶在地址欄的地址文本框輸入網(wǎng)站地址并單擊右側(cè)的“轉(zhuǎn)到”按鈕時(shí),它下面的瀏覽器選項(xiàng)卡將創(chuàng)建一個(gè)新的選項(xiàng)卡,并在選項(xiàng)卡中放置一個(gè)瀏覽器組件
28、顯示新的網(wǎng)頁內(nèi)容。 jLabel1.setText("地址:"); // 地址標(biāo)簽 addressBar.add(jLabel1, BorderLayout.WEST); // 添加標(biāo)簽到地址欄 address.setText("http://"); // 設(shè)置地址文本框內(nèi)容 addressBar.add(address, BorderLayout.CENTER); // 添加地址文本框到地址欄 goButton.setText("轉(zhuǎn)到"); // 設(shè)置轉(zhuǎn)到按的文本 goButton.setFocusable(false); goButt
29、on.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); goButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); // 添加轉(zhuǎn)到按鈕的事件監(jiān)聽器,當(dāng)單擊轉(zhuǎn)到按鈕時(shí),執(zhí)行業(yè)務(wù)方法 goButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { go
30、ButtonActionPerformed(evt); // 調(diào)用轉(zhuǎn)到按鈕的業(yè)務(wù)方法 } }); addressBar.add(goButton, BorderLayout.EAST); // 添加轉(zhuǎn)到按鈕到地址欄 3.5 瀏覽器選項(xiàng)卡的實(shí)現(xiàn) 以前的瀏覽器都是單個(gè)窗體的軟件,在每次需要同時(shí)瀏覽不同的網(wǎng)站或者在新窗口顯示網(wǎng)頁的情況下,都需要重新啟動(dòng)或彈出一個(gè)瀏覽器軟件來顯示指定的網(wǎng)頁內(nèi)容。因此本模塊使用瀏覽器面板作為所有瀏覽器組件的容器: 3.5.1 繼承擴(kuò)展瀏覽器組件 由于網(wǎng)頁的超級(jí)鏈接或JavaScript腳本可以在新的瀏覽器窗口中顯示內(nèi)容,而新建立
31、的瀏覽器窗體會(huì)使用默認(rèn)的瀏覽器打開網(wǎng)頁,因此本模塊必須繼承WebBrowser類來編寫自己的瀏覽器組件類Browser。 這樣就可以重寫父類的willOpenWindow()方法攔截彈出新窗體顯示網(wǎng)頁內(nèi)容的事件,然后再該方法中使用自己的事件,在選項(xiàng)卡面板中創(chuàng)建瀏覽器組件顯示網(wǎng)頁。 3.5.2 編寫瀏覽器面板 將擴(kuò)展的Browser瀏覽器組件封裝在一個(gè)面板中實(shí)現(xiàn)瀏覽器面板,這個(gè)面板將被添加到存放瀏覽器的選項(xiàng)卡面板中.瀏覽器面板添加了Browser瀏覽器組件的實(shí)例對(duì)象,并且為瀏覽器組件添加了事件監(jiān)聽器。 3.5.3 編寫瀏覽器選項(xiàng)卡面板 本模塊的選項(xiàng)卡面板用于存放瀏覽器組
32、件,使瀏覽器支持選項(xiàng)卡界面創(chuàng)建選項(xiàng)卡時(shí)為面板添加鼠標(biāo)單擊事件,在用戶單擊選項(xiàng)卡的標(biāo)簽時(shí)執(zhí)行業(yè)務(wù)方法。另外,還設(shè)置了選項(xiàng)卡面板的模型對(duì)象,包括選項(xiàng)卡的選擇事件的處理方法。CreateBrowser()和getSelBrowser()方法分別用于在選項(xiàng)卡面板創(chuàng)建瀏覽器面板和獲取當(dāng)前選擇的面板中的瀏覽器組件實(shí)例。 本模塊使用JDIC類庫來實(shí)現(xiàn)瀏覽器界面,該類庫可以從 3.5.4編寫瀏覽器組件監(jiān)聽器 在編寫瀏覽器面板組件時(shí),在面板中創(chuàng)建了瀏覽器組件,同時(shí)也為該組件添加了事件監(jiān)聽器。 3.6 收藏夾的實(shí)現(xiàn) 收藏夾是瀏覽器不可缺少的功能,它記錄上網(wǎng)時(shí)常用的,經(jīng)典的網(wǎng)站地址。 3.6.1
33、 添加到收藏夾 在瀏覽器模塊的主窗體上單擊”收藏夾”/”添加到收藏夾”菜單項(xiàng),將啟動(dòng)添加收藏夾功能,該功能能將當(dāng)前瀏覽器訪問的網(wǎng)站地址添加到收藏夾中,日后可以從收藏夾中直接選擇瀏覽器指定的網(wǎng)址。 添加收藏夾功能的實(shí)現(xiàn)步驟如下: 1 編寫”添加到收藏夾”菜單項(xiàng)的業(yè)務(wù)代碼,這個(gè)方法將有菜單項(xiàng)的事件監(jiān)聽調(diào)用,方法內(nèi)部獲取了選項(xiàng)卡面板當(dāng)前的選項(xiàng)卡索引,然后使用所有獲取選項(xiàng)卡的標(biāo)題,使用該標(biāo)題創(chuàng)建了”添加到收藏夾”對(duì)話框的實(shí)例,把其余的工作交由該對(duì)話框?qū)崿F(xiàn)。 2在”添加到收藏夾”對(duì)話框中編寫初始化收藏夾樹組件的方法,該方法將在對(duì)話框的構(gòu)造方法中被調(diào)用,它將調(diào)用loadMenu()方法添加收藏夾菜
34、單的內(nèi)容。 3編寫裝載收藏夾菜單內(nèi)容的loadMenu()方法,該方法使用遞歸算法遍歷收藏夾的數(shù)據(jù)集合對(duì)象,從這個(gè)集合對(duì)象中裝載收藏夾的所有內(nèi)容到”收藏夾”菜單中。 4 編寫”確定”按鈕的業(yè)務(wù)處理方法,該方法在用戶輸入名稱標(biāo)識(shí)并單擊按鈕時(shí)被”確定”按鈕的事件監(jiān)聽器調(diào)用,它將完成從讀取用戶輸入名稱標(biāo)識(shí)到保存網(wǎng)站地址到收藏夾的全過程。 3.6.2 整理收藏夾 整理收藏夾的實(shí)現(xiàn)比較復(fù)雜,它的樹組件要顯示的收藏夾內(nèi)容包括文件夾和收藏的網(wǎng)址信息,而且可以對(duì)這些信息進(jìn)行維護(hù)和移動(dòng)操作。其中包括”創(chuàng)建文件夾”,”重命名”,”刪除”操作。 實(shí)現(xiàn)過程如下: 1 編寫”整理收藏夾”菜單項(xiàng)
35、的業(yè)務(wù)處理方法,該方法將在單擊該菜單時(shí)由菜單項(xiàng)的時(shí)間監(jiān)聽器調(diào)用,方法的實(shí)現(xiàn)非常簡單,因?yàn)樗袠I(yè)務(wù)都由”整理收藏夾”對(duì)話框完成。 2 編寫”整理收藏夾”對(duì)話框的構(gòu)造方法,在構(gòu)造方法中分別調(diào)用初始化對(duì)話框界面的方法和初始化收藏夾樹組件的方法。 3編寫初始化樹組件的方法,該方法將調(diào)用loadFavoriteNode()方法裝載樹節(jié)點(diǎn)內(nèi)容, 4 編寫裝載樹組件節(jié)點(diǎn)內(nèi)容的方法,該方法使用了遞歸方法,原因是要遍歷的內(nèi)容包括子節(jié)點(diǎn)的嵌套。 6 編寫”重命名”按鈕的事件處理方法,作為維護(hù)操作重命名是必不可少的,特別是收藏夾中的文件夾。如果沒有重命名,則需要?jiǎng)h除文件,重新建立;如果文件夾中包含大量的收藏
36、信息,會(huì)損失很多資源。單擊”重命名”按鈕時(shí),將在事件監(jiān)聽器中調(diào)用該方法完成命名操作。 7 編寫”刪除”按鈕的事件處理方法,該方法將在”刪除”按鈕的事件監(jiān)聽器中被調(diào)用。 8 編寫”移動(dòng)到”按鈕的事件處理方法,該方法用于移動(dòng)收藏選項(xiàng)到其他文件夾中,其按鈕的事件監(jiān)聽器將調(diào)用該方法。 4、 測試 4.1 測試與調(diào)試的基本概念 軟件測試是整個(gè)系統(tǒng)開發(fā)過程中一個(gè)重要環(huán)節(jié),是成功開發(fā)本系統(tǒng)的重要保證。軟件測試階段的主要任務(wù)是發(fā)現(xiàn)并排除在分析、設(shè)計(jì)、編碼各階段中產(chǎn)生的各種類型的錯(cuò)誤,以得到可使用的軟件系統(tǒng)。 常用的軟件測試方法有兩大類:靜態(tài)測試方法和動(dòng)態(tài)測試方法。 靜態(tài)測試方法是程序遠(yuǎn)普遍
37、采用的一種方法,其內(nèi)容主要是通過人工模擬軟件系統(tǒng)的執(zhí)行方式,以代碼會(huì)審、走查、辦公室檢查的形式分析或核查系統(tǒng)的功能實(shí)現(xiàn)、編碼過程的正確性。動(dòng)態(tài)測試方法是通過輸入一組預(yù)先按照一定的測試準(zhǔn)則構(gòu)造的實(shí)例數(shù)據(jù)來動(dòng)態(tài)運(yùn)行程序,而達(dá)到發(fā)現(xiàn)程序錯(cuò)誤的過程。 按照通常的軟件系統(tǒng)測試,可以分別進(jìn)行單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試,最后進(jìn)行驗(yàn)收測試,即由用戶通過試用系統(tǒng)而進(jìn)行測試,檢驗(yàn)系統(tǒng)的可用性及與用戶配合的程度。 調(diào)試是軟件開發(fā)過程中最艱巨的腦力勞動(dòng),調(diào)試開始時(shí),軟件開發(fā)者僅僅面對(duì)著錯(cuò)誤的征兆,然而在問題的外部現(xiàn)象和內(nèi)在原因之間往往并沒有明顯的聯(lián)系,在組成程序的密密麻麻的元素中,每一個(gè)都可能是錯(cuò)誤的
38、根源。如何能在浩如煙海的程序元素中找到有錯(cuò)誤的那個(gè)(或幾個(gè))元素,這是調(diào)試過程中最關(guān)鍵的技術(shù)問題。本設(shè)計(jì)中調(diào)試的方法主要是設(shè)置斷點(diǎn)跟蹤。使用斷點(diǎn)跟蹤可以找到程序的出錯(cuò)位置,縮小查找錯(cuò)誤的范圍,提高調(diào)試的效率。調(diào)試的任務(wù)是及時(shí)改正測試過程中發(fā)現(xiàn)的軟件錯(cuò)誤。具體地說,調(diào)試過程由兩個(gè)步驟組成,它從表示程序中存在錯(cuò)誤的某跡象開始,首先確定錯(cuò)誤的準(zhǔn)確位置,也就是找出哪個(gè)模塊或哪個(gè)語句引起的錯(cuò)誤。然后仔細(xì)研究推斷代碼以確定問題的原因,并設(shè)法改正?,F(xiàn)階段己研究出一些幫助調(diào)試的技術(shù),主要有輸出存儲(chǔ)器內(nèi)容、打印語句和自動(dòng)工具。 4.2 測試時(shí)間 本系統(tǒng)的測試分為以下幾個(gè)階段進(jìn)行: 第一階段: 根據(jù)需求分析
39、劃定軟件中要測試的功能和性能的范圍,確定測試的內(nèi)容。 第二階段: 分模塊對(duì)系統(tǒng)中的各模塊進(jìn)行測試,對(duì)需求分析中各模塊的功能和性能及用戶的特殊需求進(jìn)行測試,記下各模塊的所有的問題,及時(shí)解決。 第三階段: 在模塊測試的基礎(chǔ)上將各模塊拼接進(jìn)行整體功能和性能的測試。 第四階段: 綜合測試。 圖3 程序運(yùn)行示例 4.3 軟件測試的內(nèi)容 分模塊對(duì)其進(jìn)行測試: 1菜單欄模塊:能通過菜單欄的操作實(shí)現(xiàn)網(wǎng)頁的前進(jìn),后退,停止,刷新和轉(zhuǎn)到功能,收藏夾的新建與整理。 2工具欄模塊:能通過點(diǎn)擊工具圖標(biāo)來實(shí)現(xiàn)一些常用的操作。 3地址欄模塊:用來接收用戶輸入的網(wǎng)站地址,然后將該地址傳給瀏覽器組件,呈現(xiàn)
40、指定的網(wǎng)頁。 4瀏覽器選項(xiàng)卡模塊:實(shí)現(xiàn)在同一個(gè)窗體中顯示多個(gè)頁面。 5收藏夾模塊:能對(duì)收藏夾進(jìn)行添加網(wǎng)頁和整理操作。 5、實(shí)習(xí)體會(huì) 通過本次實(shí)習(xí)——網(wǎng)頁瀏覽器的實(shí)現(xiàn),使得我對(duì)現(xiàn)今瀏覽器的發(fā)展背景及現(xiàn)狀有了更全面深入的認(rèn)識(shí),從第一款瀏覽器Mosaic的發(fā)布到現(xiàn)在IE,F(xiàn)irefox,遨游,世界之窗的普及,都給予了我們生活和學(xué)習(xí)的方式的另一種詮釋。它的出現(xiàn)使得我們生活變得簡單,共享和隨性,而我們的學(xué)習(xí)和 工作也不再受到時(shí)間和地域的限制。 可以說,在剛開始的前期資料查詢和總體功能的設(shè)計(jì)分析階段,難題和困難就一直伴隨而來,一開始是腦海中沒有模塊的基本雛形。然后才去查詢關(guān)于網(wǎng)頁瀏覽
41、器的資料和書籍,通過《windows 程序設(shè)計(jì)》和《Thinking in Java》兩本書的學(xué)習(xí)和借鑒,然后才慢慢的有了模塊的基礎(chǔ)功能和模型,再往后就是模塊 功能的結(jié)構(gòu)分析以及關(guān)鍵技術(shù)的整理,關(guān)于模塊的功能,本來是想呈現(xiàn)IE風(fēng)格的瀏覽器界面,但在隨后的程序整理階段,發(fā)現(xiàn)每打開一個(gè)網(wǎng)頁,就彈出一個(gè)IE窗口,使得桌面有點(diǎn)繁雜,便想到了實(shí)現(xiàn)類似與遨游的一個(gè)窗口實(shí)現(xiàn)多個(gè)網(wǎng)頁的呈現(xiàn)。這其中便有了瀏覽器選項(xiàng)卡的開發(fā)與實(shí)現(xiàn),通過《Java組件設(shè)計(jì)》的學(xué)習(xí),了解到關(guān)于JDIC項(xiàng)目關(guān)于瀏覽器選項(xiàng)卡的實(shí)現(xiàn),通過下載JDIC類庫,實(shí)現(xiàn)了瀏覽器選項(xiàng)卡,從而達(dá)成了一個(gè)窗口顯示多個(gè)網(wǎng)頁的目的。在隨后的編程過程中,又有了
42、收藏夾的難題。在最初的實(shí)現(xiàn)中,每次當(dāng)關(guān)閉窗口時(shí),保存在收藏夾中的網(wǎng)友與分類也隨之消失,下次再打開時(shí)上次保存的內(nèi)容已不復(fù)存在,這就沒有實(shí)現(xiàn)收藏夾的基本功能。后面才知道是收藏夾沒有被持久化,于是查詢相關(guān)資料得出將收藏夾持久化的方法,最好的方法是將收藏夾集合序列化到數(shù)據(jù)文件中,這才解決了收藏夾的問題 東華理工學(xué)院長江學(xué)院 實(shí)習(xí)評(píng)分表 姓名: 黃禮斌 班級(jí): 083211 學(xué)號(hào):08321113 實(shí)習(xí)題目:基于Java的網(wǎng)頁瀏覽器設(shè)計(jì)與開發(fā) 項(xiàng)目內(nèi)容 滿分 實(shí) 評(píng) 選 題 能結(jié)合所學(xué)課程知識(shí)、有一定的能力訓(xùn)練。符合選題要求 (5人一題)
43、 10 工作量適中,難易度合理 10 能 力 水 平 能熟練應(yīng)用所學(xué)知識(shí),有一定查閱文獻(xiàn)及運(yùn)用文獻(xiàn)資料能力 10 理論依據(jù)充分,數(shù)據(jù)準(zhǔn)確,公式推導(dǎo)正確 10 能應(yīng)用計(jì)算機(jī)軟件進(jìn)行編程、資料搜集錄入、加工、排版、制圖等 10 能體現(xiàn)創(chuàng)造性思維,或有獨(dú)特見解 10 成 果 質(zhì) 量 總體設(shè)計(jì)正確、合理,各項(xiàng)技術(shù)指標(biāo)符合要求。 10 說明書綜述簡練完整,概念清楚、立論正確、技術(shù)用語準(zhǔn)確、結(jié)論嚴(yán)謹(jǐn)合理;分析處理科學(xué)、條理分明、語言流暢、結(jié)構(gòu)嚴(yán)謹(jǐn)、版面清晰 10 設(shè)計(jì)說明書欄目齊全、合理,符號(hào)統(tǒng)一、編號(hào)齊全?!「袷健⒗L圖、表格、插圖等規(guī)范準(zhǔn)確,符合國家標(biāo)準(zhǔn) 10 有一定篇幅,字符數(shù)不少于5000 10 總 分 100 指導(dǎo)教師評(píng)語: 指導(dǎo)教師簽名: 年 月 日
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 隱蔽工程驗(yàn)收要點(diǎn)
- 給排水中水泵揚(yáng)程與壓力的關(guān)系
- 水泥廠燒成回轉(zhuǎn)窯中控操作問題解答
- 地暖安裝注意事項(xiàng)
- 水泥廠中控操作自動(dòng)化專業(yè)試題(附答案)
- 防水套管的應(yīng)用與分類
- 施工現(xiàn)場職業(yè)健康管理制度
- 常見基坑工程的支護(hù)方式
- 水泥包裝車間各崗位職責(zé)
- 打樁機(jī)的種類
- 水泥磨操作員試題(附答案)
- 鋼結(jié)構(gòu)工程量計(jì)算注意事項(xiàng)
- 水泥控制工試題(附答案)
- 水泥生產(chǎn)工藝類知識(shí)考試題(附答案)-
- 鋼結(jié)構(gòu)安裝施工安全技術(shù)交底范文