【正文】
“斷點(diǎn)續(xù)傳”的保存信息,文件名以下載的文件名加上 .tmp 命名,當(dāng)該文件下載完成時(shí),程序會(huì)自動(dòng)刪除該記錄文件。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說明書(論文) 20 boolean markSupported( ),判斷流是否支持標(biāo)記功能。該形式由原始二進(jìn)制數(shù)據(jù) 值轉(zhuǎn)換成的字符組成。每個(gè)線程都是通過某個(gè)特定 Thread 對(duì)象所對(duì)應(yīng)的 run( )方法來完成其操作的,因?yàn)閞un( )方法中的代碼定義執(zhí)行線程所需的功能,所以 run( )方法被稱為線程體 [17]。 ? 用戶界面模塊:負(fù)責(zé)定義可視化的用戶界面。 為了對(duì)下載任務(wù)進(jìn)行掌控,用戶往往具有設(shè)置下載任務(wù)的線程數(shù),文件下載網(wǎng)址,文件下載存儲(chǔ)目錄和浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說明書(論文) 14 在下載過程中對(duì)下載任務(wù)的狀態(tài)進(jìn)行監(jiān)控等功能需求 [15]。 著重 介紹了 JAVA、 Swing技術(shù) 、 HTTP協(xié)議 ,同時(shí)明確了系統(tǒng)開發(fā)的總體原則。(我們稱)這個(gè)應(yīng)答服務(wù)器為源服務(wù)器( origin server)。在運(yùn)行時(shí)內(nèi)核是整個(gè)架構(gòu)的核心,其他部件都是以插件方式來實(shí)現(xiàn)的。 Hibernate 作為模型 /數(shù)據(jù)訪問層。 ( 2)可存取性支持 所有的 Swing 組件都實(shí)現(xiàn)了 Accessible 接口,提供對(duì)可存取性的支持,使得輔助功能如屏幕閱讀器能夠十分方便地從 Swing 組件中得到信息。而 Swing 使得程序在一個(gè)平臺(tái)上運(yùn)行時(shí)能夠有不同的外觀,用戶可以選擇自己習(xí)慣的外觀。 (3)Java ME( Java Platform, Micro Edition) 。在本質(zhì)上, Java 技術(shù)將用戶的計(jì)算能力從桌面擴(kuò)展到了 Web 資源。它由 JVM 和 Java 應(yīng)用程序編程接口( Java Application Programming Interface, API)組成。因此從使用操作方面看,此系統(tǒng)得開發(fā)是可行的。 系統(tǒng)的可行性分析主要包括技術(shù)上的可行性和操作上的可行性。 隨后,“斷點(diǎn)續(xù)傳”的概念就出來了。 本科畢業(yè)設(shè)計(jì)說明書(論文) 題目 : 基于 HTTP 協(xié)議的斷點(diǎn)續(xù)傳應(yīng)用系統(tǒng) 開發(fā) 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說明書(論文) 1 畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說明 原創(chuàng)性聲明 本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果?!皵帱c(diǎn)續(xù)傳”,顧名思義 就是如果下載中斷,在重新建立連接后,跳過已經(jīng)下載的部分,而只下載沒有下載的部分。本系統(tǒng)的可行性分析如下: 技術(shù)可行性 下 載程序功能模塊的實(shí)現(xiàn)主要利用了面向?qū)ο蟮?Java 高級(jí)編程語言。 論文內(nèi)容概述 各章節(jié)的主要內(nèi)容如下 : 第一章是緒論 ,討論課題的研究 背景、意義和研究目標(biāo),及可行性分析,包括技術(shù)可行性,操作可行性 。 Java API 是一個(gè)大型的現(xiàn)成軟件組件(類)集合,它可以簡化 applet 和應(yīng)用程序的開發(fā)和部署,包括健壯、安全且可互操作的企業(yè)應(yīng)用程序。 Web 組件由稱為 Web 容器( Web container) 的運(yùn)行時(shí)平臺(tái)支持, Web 容器的服務(wù)包括請(qǐng)求分派、安全性、并發(fā)性、生命周期管理以及對(duì)命名、事務(wù)和電子郵件等 API 的訪問。這個(gè)版本以前稱為 J2ME。 Swing是 AWT的擴(kuò)展,它提供了許多新的圖形界面組件。 ( 3)支持鍵盤操作 在 Swing 組件中,使用 JComponent 類的 registerKeyboardAction()方法,能使用戶通過鍵盤操作來替代鼠標(biāo)驅(qū)動(dòng) GUI 上 Swing 組件的相應(yīng)動(dòng)作。它通過配置文件 ( 或( *.)把 java對(duì)象或持久化對(duì)象( Persistent Obeject, PO)映射到數(shù)據(jù)庫中的數(shù)據(jù)表,然后通過操作 PO,對(duì)數(shù)據(jù)庫中的表進(jìn)行各種操作。 Eclipse 采用動(dòng)態(tài)加載機(jī)制,即只有需要的才加載,這樣可以降低啟動(dòng)時(shí)間,提高資源使用效率 [11]。在用戶代理和源服務(wù)器中間可能存在多個(gè)中間層,比如代理,網(wǎng)關(guān),或者隧道( tunnels)。浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說明書(論文) 13 第三章 需求分析 及關(guān)鍵技術(shù)和難點(diǎn) 用戶需求分析 隨著 Inter的 發(fā)展 ,進(jìn)入信息時(shí)代后快速獲得 網(wǎng)絡(luò) 共享資源成為很簡單的事情,人們對(duì)互聯(lián)網(wǎng)也有了很大的依賴性。 鑒于某些軟件使用初學(xué)者甚至某些電腦初學(xué)者的實(shí)際情況,他們往往需要系統(tǒng)有一個(gè)格外的幫助文檔,使他們能夠更快、更好地學(xué)會(huì)使用斷點(diǎn)續(xù)傳下載軟件,提高效率。 整個(gè)系統(tǒng)的執(zhí)行流程如圖 所示: 否 下載 是 圖 多線程下載工具執(zhí)行流程圖 關(guān)鍵技術(shù)和難點(diǎn) Java 多線程技術(shù) 多線程是這樣一種機(jī)制,它允許在程序中并發(fā)執(zhí)行多個(gè)指令流,每個(gè)指令 流都被稱為一個(gè)線程,線程間互相獨(dú)立。 Java I/O 流技術(shù) 為了進(jìn)行數(shù)據(jù)的輸入 /輸出操作, Java 中把不同的輸入 /輸出源抽象表述為“流”( stream)。因此,從包含文本的字符流中讀取數(shù)據(jù)比直接讀取二進(jìn)制數(shù)據(jù)涉及更多的工作 [19]。 void mark( int readlimit),在支持標(biāo)記的輸入流的當(dāng)前位置設(shè)置一個(gè)標(biāo)記。用戶單擊“刪除任務(wù)”按鈕可以刪除選中的任務(wù),可以多選。 = tmp_URL。 = 3。 try { 。 } } 它的作用是 從下載 URL 地址中文件名和文件長度。// 獲取文件長度 = ()。 系統(tǒng) 功能模塊設(shè)計(jì) 本系統(tǒng) 分為五個(gè)功能模塊,分別為下載任務(wù)實(shí)體類模塊、系統(tǒng)工具類模塊、線程下載類模塊、下載任務(wù)總 控制模塊、用戶界面模塊。注意,流必須支持標(biāo)記功能。在 包中, InputSteam 和 OutputStream 類及它們的子類均表示字節(jié)流,并且提供了讀 /寫二進(jìn)制數(shù)據(jù)的方法。 按照流的方向劃分,可以分為輸入流和輸出流。 多個(gè)線程的執(zhí)行是并發(fā)的,也是在邏輯上“同時(shí)”,而不管是否是物理上的“同時(shí)”。 下載任務(wù)實(shí)體類的基本功能分析 對(duì)于該系統(tǒng)來說,就是技術(shù)斷點(diǎn)續(xù)傳的多線程下載工具,下載任務(wù)的所有信息應(yīng)該被定義在一個(gè)實(shí)體類中。比如,針對(duì)一些專業(yè)的 論壇 提供了很多相關(guān)資料以方便人們閱讀或了解;還有更多的人希望能過下載到他們喜歡聽得 音樂 、好看的圖片、喜歡的電影等等。 事實(shí)上, HTTP 可以在任何其他互聯(lián)網(wǎng)協(xié)議上,或者在其他網(wǎng)絡(luò)上實(shí)現(xiàn)。工作臺(tái)插件是 Eclipse 提供的用戶界面。 Eclipse 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺(tái)。 ( 4)設(shè)置邊框 對(duì) Swing 組件可以設(shè)置一個(gè)或多個(gè)邊框。如圖 : J C o m p o n e n tA b s t r a c t B u t t o nJ C o m b o B o xJ L a b e lJ L i s tJ M e n u B a rJ P a n e lJ P o n p u p M e n uJ S c r o l l B a rJ S c r o I I P a n eJ T e x t C o m p o n e n tJ B u t t o nJ M e n u I t e mJ T o g g l e B u t t o nJ C h e c k B o x M e n u I t e mJ M e n uJ R a d i o B u t t o n M e n u I t e mJ C h e c k B o xJ r a d i o B u t t o nJ E d i t o r P a n eJ T e x t A r e aJ T e x t F i e l dJ T e x t P a n eJ P a s s w o r d F i e l d 圖 Swing 組件 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說明書(論文) 8 Swing 組件的簡介 ( 1) MVC( ModelViewController)體系結(jié)構(gòu) 前面我們提到, Swing 勝過 AWT 的主要優(yōu)勢(shì)在于 MVC 體系結(jié)構(gòu)的普遍使用。 Java ME 包括靈活的用戶界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議以及對(duì)可以動(dòng)態(tài)下載的連網(wǎng)和離線應(yīng)用程序的豐富支持。 Java 平臺(tái)有三個(gè)版本,這使軟件開發(fā)人員、服務(wù)提供商和設(shè)備生產(chǎn)商可以針對(duì)特定的市場進(jìn)行開發(fā): (1) Java SE( Java Platform, Standard Edition) 。 Java API 組織 成相關(guān)類和接口的庫;庫也稱為包( package)。 第三章是需求分析, 介紹系統(tǒng)業(yè)務(wù)流程 概況 , 主要闡述了在線作業(yè)系統(tǒng)功能模塊的需求用例。多線程編程技術(shù)是 Java 語言的重要特點(diǎn)。 自從“多線程下載”技術(shù)發(fā)明以來,這項(xiàng)技術(shù)得到前所未有的關(guān)注已是不爭的事實(shí)。對(duì)本研究提供過幫助和做出過貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說明并表示了 謝意。 這些年來,下載技術(shù)一直在發(fā)展, 最原始的下載功能僅僅是個(gè)“下載”過程,即從 WEB 服務(wù)器上連續(xù)地讀取文件。要達(dá)到這個(gè)目的,必須分析幾種主要的可能解法的利弊,從而判斷原定的系統(tǒng)規(guī)模和目標(biāo)是否現(xiàn)實(shí),系統(tǒng)完成后所能帶來的效益是否大到值得投資開發(fā)這個(gè)系統(tǒng)的程度。系統(tǒng)的可行性分析主要包括技術(shù)上的可行性和操作上的可行性 。 Java 平臺(tái)( Java platform) 是一種純軟件平臺(tái),它可以在各種基于硬件的平臺(tái)上運(yùn)行。這種語言是進(jìn)行服務(wù)器端 Web 編程的理想框架。企業(yè)版本幫助開發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端 Java 應(yīng)用程序。F)。比如,某年級(jí)各個(gè)班級(jí)的學(xué)生人數(shù)是數(shù)據(jù)部分,而顯示方式可以是多種多樣的,既可以采用柱狀圖顯示,也可以采用餅圖顯示,還可以采用直接的數(shù)據(jù)輸出。 他們可能是在被應(yīng)用程序?qū)嵗?,尚未進(jìn)行持久化的對(duì)象,也可能是因?yàn)閷?shí)例化他們的 Session已經(jīng)被關(guān)閉而脫離持久化的對(duì)象。 Eclipse 的體系結(jié)構(gòu) Eclipse 平臺(tái)體系結(jié)構(gòu)主要由 5 部分組成,分別是平臺(tái)運(yùn)行庫、工作區(qū)、工作臺(tái)、團(tuán)隊(duì)支持和幫助。(我們稱這個(gè)客戶端)叫用戶代理( user agent)。 Post 命令用于向 WEB 服務(wù)器發(fā)送數(shù)據(jù),通常使把信息發(fā)送給一個(gè)單獨(dú)的應(yīng)用程序。 在下載任務(wù)的管理這一塊,用戶不僅希望下載工具具有下載一個(gè)一 個(gè)資源的功能,而且具有批量下載有些相似的或有關(guān)聯(lián)的資源的功能。 ? 線程下載模塊:負(fù)責(zé)定義每個(gè)線程下載的具體實(shí)現(xiàn)過程。接著它將調(diào)用 run( )方法。字符流用于存儲(chǔ)和檢索文本,而且可以使用它讀取由非 Java 程序生成的文本文件。 int available( ),返回可以從中讀取的字節(jié)數(shù)。選中想要下載的任務(wù),可以多選,點(diǎn)擊“開始”按鈕,程序?qū)㈤_始任務(wù)的下載,當(dāng)?shù)谝淮芜\(yùn)行程序時(shí),程序?qū)⒄憬I(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說明書(論文) 22 在程序的當(dāng)前目錄下自動(dòng)新建一個(gè)配置文件,該文件名為 ,該配置文件將記錄該程序的默認(rèn)下載地址和所有上一次的任務(wù)下載信息。 = 1。 return r。 downloadInfo2 = new DownLoadInfo()。請(qǐng)求后在 HttpURLConnection 的 InputStream 或 OutputStream 上調(diào)用 close() 方法可以釋放與此實(shí)例關(guān)聯(lián)的網(wǎng)絡(luò)資源。 )。 由于論文的篇幅有限,涉及到代碼 只張貼了重點(diǎn)部分。 ? 輸出流的基本方法如下: void write( int c)。此方法以 int 型返回流的下一個(gè)可讀字節(jié)。 按照流所處理的數(shù)據(jù)類型劃分,可以分為字節(jié)流和字符流。在基于 Java 的應(yīng)用程序中可以通過以下兩種方法創(chuàng)建線程對(duì)象。如下圖 所示 : 圖 下載任務(wù)實(shí)體類中定義的屬性 上次文件下載長度 下載任務(wù)的 URL 下載文件的大小 下載文件存放目錄 當(dāng)前文件已下載長度 下載任務(wù)實(shí)體類 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說明書(論文) 15 系統(tǒng)工具類的基本功能分析 系統(tǒng)工具類主要負(fù)責(zé)定義測試連接 URL 是否有效的方法以及獲取要下載的資源文件名稱、長度和 MIME 信息的方法。 由于用戶下載需求的增大,也要求下載軟件能夠迅速完成對(duì)資源的下載。 HTTP 服務(wù)器則在那個(gè)端口監(jiān)聽客戶端發(fā)送過來的請(qǐng)求。團(tuán)隊(duì)支持插件負(fù)責(zé)提供版本控制和配置管理支持。 Eclipse 的起源和發(fā)展 Eclipse的前身是 IBM的 Visual Age。 Hibernate 的體系結(jié)構(gòu)如圖 所示。當(dāng)模型發(fā)生改變時(shí),它會(huì)通知所有依賴它的視圖,視圖使用控件指定其相應(yīng)機(jī) 制。 Swing 技術(shù)簡介 Swing是一個(gè)用于開發(fā) Java應(yīng)用程序用戶界面的開發(fā)工具包。Java SE 包含了支持 Java Web 服務(wù)開發(fā)的類,并為 Java Platform, Enterpri