




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1緒論1.1課題的研究背景隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷開(kāi)展,越來(lái)越多的用戶以及開(kāi)發(fā)人員深切地感受到了計(jì)算機(jī)技術(shù)在搜索領(lǐng)域中的作用越來(lái)越重要,越來(lái)越要求搜索引擎執(zhí)行效率。掌握計(jì)算機(jī)是生活的需要,是職業(yè)的需要,更是產(chǎn)業(yè)開(kāi)展的需要,更是為了創(chuàng)造更高的經(jīng)濟(jì)利潤(rùn)的需要。信息在社會(huì)和經(jīng)濟(jì)的開(kāi)展中所起的作用越來(lái)越為人們所重視。隨著網(wǎng)絡(luò)的迅速開(kāi)展,萬(wàn)維網(wǎng)稱為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn)。搜索引擎作為一個(gè)輔助人們檢索信息的工具成為用戶訪問(wèn)萬(wàn)維網(wǎng)的入口和指南。在計(jì)算機(jī)的三大主要應(yīng)用領(lǐng)域(科學(xué)計(jì)算、數(shù)據(jù)處理與過(guò)程控制)中,數(shù)據(jù)處理的比重約占70%左右。計(jì)算機(jī)作為信息處理的工具,為適應(yīng)數(shù)據(jù)處理需求的迅速提高,滿足各類信息系統(tǒng)對(duì)數(shù)據(jù)管理的要求,在文件系統(tǒng)的根底上開(kāi)展起了數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)技術(shù)產(chǎn)生于60年代末,70年代初期,其主要目的是有效地管理和存取大量的數(shù)據(jù)資源。數(shù)據(jù)庫(kù)技術(shù)主要研究如何存儲(chǔ)、使用和管理數(shù)據(jù),是計(jì)算機(jī)數(shù)據(jù)管理技術(shù)開(kāi)展的最新階段。數(shù)據(jù)庫(kù)存儲(chǔ)的是通用化的相關(guān)數(shù)據(jù)集合,它不僅包括數(shù)據(jù)本身,而且包括數(shù)據(jù)之間的聯(lián)系。30多年來(lái),數(shù)據(jù)庫(kù)在理論上、實(shí)現(xiàn)技術(shù)上均得到很大的開(kāi)展,研制出許多商用數(shù)據(jù)庫(kù)管理系統(tǒng),使得計(jì)算機(jī)應(yīng)用滲透到各行各業(yè)的各類管理工作中。現(xiàn)在,數(shù)據(jù)庫(kù)技術(shù)已成為計(jì)算機(jī)領(lǐng)域里最重要的技術(shù)之一,是軟件學(xué)科的一個(gè)獨(dú)立分支。近年來(lái),數(shù)據(jù)庫(kù)技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的開(kāi)展相互滲透、相互促進(jìn),已成為當(dāng)今計(jì)算機(jī)領(lǐng)域內(nèi)開(kāi)展迅速、應(yīng)用廣泛的兩大領(lǐng)域。數(shù)據(jù)庫(kù)系統(tǒng)是數(shù)據(jù)處理的核心機(jī)構(gòu),售樓管理系統(tǒng)、辦公自動(dòng)化系統(tǒng)、決策支持系統(tǒng)等都是使用了數(shù)據(jù)庫(kù)管理系統(tǒng)或數(shù)據(jù)庫(kù)技術(shù)的計(jì)算機(jī)應(yīng)用系統(tǒng)?;ヂ?lián)網(wǎng)已經(jīng)進(jìn)入大家的生活,利用互聯(lián)網(wǎng)來(lái)獲取有價(jià)值的信息勢(shì)在必行。本課題主要是實(shí)現(xiàn)一個(gè)搜索引擎,主要功能是抓取網(wǎng)絡(luò)上的網(wǎng)頁(yè)中的信息,進(jìn)行過(guò)濾返回相關(guān)有用的信息。通過(guò)本系統(tǒng),用戶只需輸入關(guān)鍵字,系統(tǒng)進(jìn)行處理后,將會(huì)返回與關(guān)鍵字相關(guān)聯(lián)的信息。1.2課題的研究現(xiàn)狀目前為止,隨著互聯(lián)網(wǎng)的普及,使用計(jì)算機(jī)的人越來(lái)越多,那么需要查找信息的的功能就越顯得重要。從而使得搜索引擎應(yīng)需求而生,搜索引擎作為一個(gè)輔助人們檢索信息的工具已經(jīng)顯得越來(lái)越重要。搜索引擎按其工作方式可以分為三種,分別是全文搜索引擎,目錄搜索類引擎和元搜索引擎。全文搜索引擎是常用的搜索引擎,大家最熟悉的就是國(guó)外的代表Google,和國(guó)內(nèi)的百度。它們通常都是提取各個(gè)網(wǎng)站的網(wǎng)頁(yè)文字存放在建立的數(shù)據(jù)庫(kù)中,檢索與用戶查詢條件匹配的相關(guān)記錄,然后按其自己設(shè)定的排列數(shù)序?qū)⒔Y(jié)果返回給用戶。目錄索引,就是將網(wǎng)站分類,然后存放在響應(yīng)的目錄里,用戶在查詢所需要的內(nèi)容時(shí)有兩種選擇,一種是關(guān)鍵字搜索,另一種是按分類目錄一層一層的查找。目錄索引只能說(shuō)有搜索功能,但僅僅是按照目錄分類的網(wǎng)站鏈接列表。用戶完全可以不用進(jìn)行關(guān)鍵字查詢,僅靠分類目錄也可以找到需要的信息。目錄搜索型引擎中最具代表性的是Yahoo。元搜索引擎可以同時(shí)在其他多個(gè)引擎上進(jìn)行搜索,將搜索結(jié)果進(jìn)行統(tǒng)一處理,并將結(jié)果以統(tǒng)一的格式返回給用戶。正因?yàn)槿绱?,這類搜索引擎的有點(diǎn)是返回結(jié)果的信息量更全面,但是缺點(diǎn)就是無(wú)用的信息太多不能準(zhǔn)確的找到用戶所需要的結(jié)果。在搜索結(jié)果排列方面,不通的元搜索引擎有不通的結(jié)果排列的方式,如Dogpile,就直接按來(lái)源引擎排列搜索結(jié)果,如Vivisimo,是按自定的規(guī)那么將結(jié)果重新進(jìn)行排列。網(wǎng)絡(luò)快速開(kāi)展的今天,互聯(lián)網(wǎng)承載著海量的信息,能夠準(zhǔn)確快速的提取我們所需要的信息是現(xiàn)在的挑戰(zhàn)。傳統(tǒng)的搜索引擎有Yahoo,Google,百度等,這些檢索信息的工具是每天訪問(wèn)互聯(lián)網(wǎng)的必經(jīng)之路。但是,這些傳統(tǒng)性搜索引擎存在著局限性,它不能全面的準(zhǔn)確的找到所需要的信息,也會(huì)使一些和需求無(wú)關(guān)的內(nèi)容一起搜索到。嚴(yán)重的降低了使用這些信息的效率,所以說(shuō)提高檢索信息的速度和質(zhì)量是一個(gè)專業(yè)搜索引擎的主要研究?jī)?nèi)容。1.3課題的研究意義網(wǎng)絡(luò)爬蟲(chóng)是一個(gè)自動(dòng)提取網(wǎng)頁(yè)的程序,它為搜索引擎從萬(wàn)維網(wǎng)上下載網(wǎng)頁(yè),是搜索引擎的重要組成。傳統(tǒng)爬蟲(chóng)從一個(gè)或假設(shè)干初始網(wǎng)頁(yè)的URL開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。聚焦爬蟲(chóng)的工作流程較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁(yè)分析算法過(guò)濾與主題無(wú)關(guān)的鏈接,保存有用的鏈接并將其放入等待抓取的URL隊(duì)列。然后,它將根據(jù)一定的搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復(fù)上述過(guò)程,直到到達(dá)系統(tǒng)的某一條件時(shí)停止。另外,所有被爬蟲(chóng)抓取的網(wǎng)頁(yè)將會(huì)被系統(tǒng)存貯,進(jìn)行一定的分析、過(guò)濾,并建立索引,以便之后的查詢和檢索;對(duì)于聚焦爬蟲(chóng)來(lái)說(shuō),這一過(guò)程所得到的分析結(jié)果還可能對(duì)以后的抓取過(guò)程給出反響和指導(dǎo)。在這些學(xué)科的根底上,形成信息收集和加工的方法,從而形成一個(gè)實(shí)用的、高效的系統(tǒng)。1.4課題的開(kāi)展趨勢(shì)網(wǎng)絡(luò)爬蟲(chóng)有兩種描述方式,一種是基于目標(biāo)數(shù)據(jù)模式的爬蟲(chóng)針對(duì)的是網(wǎng)頁(yè)上的數(shù)據(jù),所抓取的數(shù)據(jù)一般要符合一定的模式,或者可以轉(zhuǎn)化或映射為目標(biāo)數(shù)據(jù)模式,另一種描述方式是建立目標(biāo)領(lǐng)域的本地或詞典,用于從語(yǔ)義角度分析不同特征在同一主題的重要程度。隨著AJAX/Web2.0的流行,如何抓取AJAX等動(dòng)態(tài)頁(yè)面成了搜索引擎急需解決的問(wèn)題。如果引擎依舊采用爬的機(jī)制,是無(wú)法抓取到AJAX頁(yè)面的有效數(shù)據(jù)的。對(duì)于AJAX這樣的技術(shù),所需要的爬蟲(chóng)引擎必須是基于驅(qū)動(dòng)的。如果想要實(shí)現(xiàn)事件驅(qū)動(dòng),首先需要解決以下問(wèn)題:第一,JavaScript的交互分析和解釋;第二,DOM事件的處理和解釋分發(fā);第三,動(dòng)態(tài)DOM內(nèi)容語(yǔ)義的抽取。1.5課題的主要內(nèi)容介紹本論文共分為5個(gè)章節(jié),分別為:緒論、系統(tǒng)相關(guān)技術(shù)的研究、系統(tǒng)需求分析、系統(tǒng)的總體設(shè)計(jì)和代碼設(shè)計(jì)與實(shí)現(xiàn)。第一章緒論,共分為課題的研究背景、研究現(xiàn)狀、研究意義、開(kāi)展趨勢(shì)和主要內(nèi)容介紹等5條,從整體上對(duì)本課題進(jìn)行了分析,使得對(duì)于本課題的開(kāi)發(fā)過(guò)程有一個(gè)大概的了解。第二章是系統(tǒng)相關(guān)技術(shù)的研究,主要介紹了本課題所采用的各種相關(guān)技術(shù)。首先介紹了JAVA,說(shuō)明開(kāi)發(fā)本課題的主要技術(shù)是怎樣使用的。然后介紹了所用到的后臺(tái)的數(shù)據(jù)庫(kù),以及與數(shù)據(jù)庫(kù)的連接技術(shù)。最后介紹了開(kāi)發(fā)過(guò)程中用到的JAVA相關(guān)的技術(shù)的使用,并分析了該技術(shù)的特性。第三章是系統(tǒng)需求分析,從系統(tǒng)的可行性方面和需求方面來(lái)分析系統(tǒng)的需求,可行性分析是從技術(shù)、經(jīng)濟(jì)上和管理上來(lái)進(jìn)行闡述最后得出結(jié)論有必要開(kāi)發(fā)這個(gè)系統(tǒng);而需求分析是從用戶的角度、系統(tǒng)資源方面、性能需求方面以及功能需求方面來(lái)對(duì)系統(tǒng)進(jìn)行分析。第四章是系統(tǒng)的總體設(shè)計(jì),從系統(tǒng)的設(shè)計(jì)分析、數(shù)據(jù)表的結(jié)構(gòu)規(guī)劃對(duì)系統(tǒng)進(jìn)行總體設(shè)計(jì),其中設(shè)計(jì)分析是用了系統(tǒng)功能分析,系統(tǒng)功能模塊設(shè)計(jì),數(shù)據(jù)庫(kù)需求分析,數(shù)據(jù)庫(kù)設(shè)計(jì),覆蓋了需求分析中所要求到達(dá)的功能需求。第五章是代碼設(shè)計(jì)與實(shí)現(xiàn),系統(tǒng)分為本地搜索、網(wǎng)絡(luò)搜索兩大模塊組成,每個(gè)局部又可以分成很多小模塊。每個(gè)模塊進(jìn)行截圖分析設(shè)計(jì)的同時(shí)都進(jìn)行詳細(xì)設(shè)計(jì),寫(xiě)出了它們的關(guān)鍵代碼。系統(tǒng)相關(guān)技術(shù)的研究JAVA簡(jiǎn)介Java,是由SunMicrosystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)的總稱。用Java實(shí)現(xiàn)的HotJava瀏覽器〔支持Javaapplet〕顯示了Java的魅力:跨平臺(tái)、動(dòng)態(tài)的Web、Internet計(jì)算。從此,Java被廣泛接受并推動(dòng)了Web的迅速開(kāi)展,常用的瀏覽器現(xiàn)在均支持Javaapplet。Java平臺(tái)由Java虛擬機(jī)〔JavaVirtualMachine〕和Java應(yīng)用編程接口〔ApplicationProgrammingInterface、簡(jiǎn)稱API〕構(gòu)成。Java應(yīng)用編程接口為Java應(yīng)用提供了一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,可分為根本局部和擴(kuò)展局部。在硬件或操作系統(tǒng)平臺(tái)上安裝一個(gè)Java平臺(tái)之后,Java應(yīng)用程序就可運(yùn)行?,F(xiàn)在Java平臺(tái)已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運(yùn)行。Java分為三個(gè)體系JavaSE(Java2PlatformStandardEdition,java平臺(tái)標(biāo)準(zhǔn)版),JavaEE(Java2PlatformEnterpriseEdition,java平臺(tái)企業(yè)版),JavaME(Java2PlatformMicroEdition,java平臺(tái)微型版)。Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。Java技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和平安性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。Java的特點(diǎn):Java語(yǔ)言是簡(jiǎn)單的。Java語(yǔ)言的語(yǔ)法與C語(yǔ)言和C++語(yǔ)言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語(yǔ)言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。Java語(yǔ)言是一個(gè)面向?qū)ο蟮摹ava語(yǔ)言提供類、接口和繼承等原語(yǔ),為了簡(jiǎn)單起見(jiàn),只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制〔關(guān)鍵字為implements〕。Java語(yǔ)言全面支持動(dòng)態(tài)綁定,而C++語(yǔ)言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定??傊琂ava語(yǔ)言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。Java語(yǔ)言是分布式的。Java語(yǔ)言支持Internet應(yīng)用的開(kāi)發(fā),在根本的Java應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口〔javanet〕,它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫(kù),包括URL、URLConnection、Socket、ServerSocket等。Java的RMI〔遠(yuǎn)程方法激活〕機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段。Java語(yǔ)言是健壯的。Java的強(qiáng)類型機(jī)制、異常處理、廢料的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇。Java的平安檢查機(jī)制使得Java更具健壯性。Java語(yǔ)言是平安的。Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)平安機(jī)制以防惡意代碼的攻擊。除了Java語(yǔ)言具有的許多平安特性以外,Java對(duì)通過(guò)網(wǎng)絡(luò)下載的類具有一個(gè)平安防范機(jī)制〔類ClassLoader〕,如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供平安管理機(jī)制〔類SecurityManager〕讓Java應(yīng)用設(shè)置平安哨兵。Java語(yǔ)言是體系結(jié)構(gòu)中立的。Java程序〔后綴為java的文件〕在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式〔后綴為class的文件〕,然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。Java語(yǔ)言是可移植的。這種可移植性來(lái)源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)根本數(shù)據(jù)類型的長(zhǎng)度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSIC實(shí)現(xiàn)的。Java語(yǔ)言是解釋型的。如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式,然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。在運(yùn)行時(shí),Java平臺(tái)中的Java解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過(guò)程中需要的類在聯(lián)接階段被載入到運(yùn)行環(huán)境中。Java是高性能的。與那些解釋型的高級(jí)腳本語(yǔ)言相比,Java確實(shí)是高性能的。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-Time〕編譯器技術(shù)的開(kāi)展越來(lái)越接近于C++。Java語(yǔ)言是多線程的。在Java語(yǔ)言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子〔孫〕類來(lái)創(chuàng)立。通常有兩種方法來(lái)創(chuàng)立線程:其一,使用型構(gòu)為T(mén)hread(Runnable)的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線程,其二,從Thread類派生出子類并重寫(xiě)run方法,使用該子類創(chuàng)立的對(duì)象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來(lái)控制。Java語(yǔ)言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制〔關(guān)鍵字為synchronized〕。Java語(yǔ)言是動(dòng)態(tài)的。Java語(yǔ)言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可以通過(guò)網(wǎng)絡(luò)來(lái)載入所需要的類。這也有利于軟件的升級(jí)。另外,Java中的類有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類型檢查。Java語(yǔ)言的優(yōu)良特性使得Java應(yīng)用具有無(wú)比的健壯性和可靠性,這也減少了應(yīng)用系統(tǒng)的維護(hù)費(fèi)用。Java對(duì)對(duì)象技術(shù)的全面支持和Java平臺(tái)內(nèi)嵌的API能縮短應(yīng)用系統(tǒng)的開(kāi)發(fā)時(shí)間并降低本錢(qián)。Java的編譯一次,到處可運(yùn)行的特性使得它能夠提供一個(gè)隨處可用的開(kāi)放結(jié)構(gòu)和在多平臺(tái)之間傳遞信息的低本錢(qián)方式。特別是Java企業(yè)應(yīng)用編程接口〔JavaEnterpriseAPIs〕為企業(yè)計(jì)算及電子商務(wù)應(yīng)用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類庫(kù)。MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介MySQL是開(kāi)放源代碼的,因此任何人都可以在GeneralPublicLicense的許可下下載并根據(jù)個(gè)性化的需要對(duì)其進(jìn)行修改。相對(duì)于其它系統(tǒng)而言,MySQL數(shù)據(jù)庫(kù)可以稱得上是目前運(yùn)行速度最快的SQL語(yǔ)言數(shù)據(jù)庫(kù)。MySQL因?yàn)槠渌俣?、可靠性和適應(yīng)性而備受關(guān)注。大多數(shù)人都認(rèn)為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇。與其他的大型數(shù)據(jù)庫(kù)例如Oracle、DB2、SQLServer等相比,MySQL自有它的缺乏之處,如規(guī)模小、功能有限〔MySQLCluster的功能和效率都相比照擬差〕等,但是這絲毫也沒(méi)有減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō),MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開(kāi)放源碼軟件,因此可以大大降低總體擁有本錢(qián)。MySQL還具有以下特點(diǎn):同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)的用戶數(shù)量不受限制。可保存超過(guò)50,000,000條記錄。是目前市場(chǎng)上現(xiàn)有產(chǎn)品中運(yùn)行速度最快的數(shù)據(jù)庫(kù)系統(tǒng)。用戶權(quán)限設(shè)置簡(jiǎn)單、有效。使用C和C++編寫(xiě),并使用了多種編譯器進(jìn)行測(cè)試,保證了源代碼的可移植性。支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多種操作系統(tǒng)。為多種編程語(yǔ)言提供了API。支持多線程,充分利用CPU資源。優(yōu)化SQL查詢算法,有效地提高查詢速度。既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端效勞器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中提供多語(yǔ)言支持,常見(jiàn)的編碼如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑。提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具??梢蕴幚碛脩羯锨f(wàn)記錄的大型數(shù)據(jù)庫(kù)。支持多種存儲(chǔ)引擎。2.3JAVA與數(shù)據(jù)庫(kù)連接本文說(shuō)明的系統(tǒng)是利用MySQL廠商提供的驅(qū)動(dòng)與數(shù)據(jù)庫(kù)鏈接的。這種實(shí)現(xiàn)方法是直接使用數(shù)據(jù)庫(kù)廠商提供的用專用的網(wǎng)絡(luò)協(xié)議創(chuàng)立的驅(qū)動(dòng)程序,通過(guò)它可直接將JDBCAPI調(diào)用轉(zhuǎn)換為直接網(wǎng)絡(luò)調(diào)用。這種調(diào)用方式性能好、簡(jiǎn)單易用。這種方法的通行方式如下:應(yīng)用程序JDBCAPI驅(qū)動(dòng)程序數(shù)據(jù)源JDBC是一種可用于執(zhí)行SQL語(yǔ)句的JavaAPI,由一些Java語(yǔ)言寫(xiě)的類、界面組成。JDBC給數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)人員、數(shù)據(jù)庫(kù)前臺(tái)工具開(kāi)發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開(kāi)發(fā)人員可以用純Java語(yǔ)言編寫(xiě)完整的數(shù)據(jù)庫(kù)應(yīng)用程序。通過(guò)使用JDBC,開(kāi)發(fā)人員可以很方便地將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)。也就是說(shuō),開(kāi)發(fā)人員可以不必寫(xiě)一個(gè)程序訪問(wèn)Sybase,寫(xiě)另一個(gè)程序訪問(wèn)Oracle,再寫(xiě)一個(gè)程序訪問(wèn)Microsoft的SQLServer。用JDBC寫(xiě)的程序能夠自動(dòng)地將SQL語(yǔ)句傳送給相應(yīng)的數(shù)據(jù)庫(kù)管理系統(tǒng)〔DBMS〕。不但如此,使用Java編寫(xiě)的應(yīng)用程序可以在任何支持Java的平如上運(yùn)行,不必在不同的平臺(tái)上編寫(xiě)不用的應(yīng)用。Java和JDBC的結(jié)合可以讓開(kāi)發(fā)人員在開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用時(shí)真正實(shí)現(xiàn)“WriteOnce,RunEverywhere!〞。Java具有健壯、平安、易用等特性,而且支持自動(dòng)網(wǎng)上下載,本質(zhì)上是一種很好的數(shù)據(jù)庫(kù)應(yīng)用的編程語(yǔ)言。它所需要的是Java應(yīng)用如何同各種各樣的數(shù)據(jù)庫(kù)連接。JDBC正是實(shí)現(xiàn)這種連接的關(guān)鍵。2.4JavaScriptJavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)的客戶端腳本語(yǔ)言。JavaScript最初的設(shè)計(jì)是為了檢驗(yàn)HTML表單輸入的正確性。JavaScript起源于Netscape公司的LiveScript語(yǔ)言。JavaScript是一種基于對(duì)象(Object)和事件驅(qū)動(dòng)(EventDriven)并具有平安性能的腳本語(yǔ)言。使用它的目的是與HTML超文本標(biāo)記語(yǔ)言、Java腳本語(yǔ)言〔Java小程序〕一起實(shí)現(xiàn)在一個(gè)Web頁(yè)面中連接多個(gè)對(duì)象,與Web客戶交互作用。從而可以開(kāi)發(fā)客戶端的應(yīng)用程序等。它是通過(guò)嵌入或調(diào)入到標(biāo)準(zhǔn)的HTML語(yǔ)言中實(shí)現(xiàn)的。它的出現(xiàn)彌補(bǔ)了HTML語(yǔ)言的缺陷,它是Java與HTML折衷的選擇。JavaScript最初起源于LiveScript語(yǔ)言,當(dāng)互聯(lián)網(wǎng)開(kāi)始流行時(shí),越來(lái)越多的網(wǎng)站開(kāi)始使用HTML表單與用戶交互,然而表單交互卻成了制約網(wǎng)絡(luò)開(kāi)展的重大瓶頸(用戶總是痛苦的等待數(shù)據(jù)傳送到效勞器端檢測(cè),并傳回是否正確,僅僅的表單檢測(cè),就產(chǎn)生了屢次客戶端與效勞器端交互)。于是Netscape公司推出了LiveScript語(yǔ)言,最后Netscape與Sun將LiveScript命名為JavaScript(當(dāng)時(shí)JAVA是很時(shí)髦的互聯(lián)網(wǎng)名詞),隨后微軟開(kāi)始了其野心勃勃的瀏覽器方案,并且推出了JScript,于是網(wǎng)絡(luò)上出現(xiàn)了幾種類似的JavaScript語(yǔ)言,但是沒(méi)有統(tǒng)一的特性與語(yǔ)法(當(dāng)時(shí)的JavaScript開(kāi)發(fā)被看做是一場(chǎng)噩夢(mèng),因此很多程序員并不看好JavaScript)。最終JavaScript被提交到歐洲計(jì)算機(jī)制造商協(xié)會(huì)(ECMA),做為中立的ECMA開(kāi)始了標(biāo)準(zhǔn)化腳本語(yǔ)言之路,并將其命名為ECMAScript。JavaScript特點(diǎn):JavaScript是一種腳本語(yǔ)言,它采用小程序段的方式實(shí)現(xiàn)編程。像其它腳本語(yǔ)言一樣,JavaScript同樣已是一種解釋性語(yǔ)言,它提供了一個(gè)易的開(kāi)發(fā)過(guò)程。它的根本結(jié)構(gòu)形式與C、C++、VB、Delphi十分類似。但它不像這些語(yǔ)言一樣,需要先編譯,而是在程序運(yùn)行過(guò)程中被逐行地解釋。它與HTML標(biāo)識(shí)結(jié)合在一起,從而方便用戶的使用操作。JavaScript是一種基于對(duì)象的語(yǔ)言,同時(shí)以可以看作一種面向?qū)ο蟮?。這意味著它能運(yùn)用自己已經(jīng)創(chuàng)立的對(duì)象。因此,許多功能可以來(lái)自于腳本環(huán)境中對(duì)象的方法與腳本的相互作用。JavaScript的簡(jiǎn)單性主要表達(dá)在:首先它是一種基于Java根本語(yǔ)句和控制流之上的簡(jiǎn)單而緊湊的設(shè)計(jì),從而對(duì)于學(xué)習(xí)Java是一種非常好的過(guò)渡。其次它的變量類型是采用弱類型,并未使用嚴(yán)格的數(shù)據(jù)類型。JavaScript是一種平安性語(yǔ)言,它不允許訪問(wèn)本地的硬盤(pán),并不能將數(shù)據(jù)存入到效勞器上,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過(guò)瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互。從而有效地防止數(shù)據(jù)的喪失。JavaScript是動(dòng)態(tài)的,它可以直接對(duì)用戶或客戶輸入做出響應(yīng),無(wú)須經(jīng)過(guò)Web效勞程序。它對(duì)用戶的反映響應(yīng),是采用以事件驅(qū)動(dòng)的方式進(jìn)行的。所謂事件驅(qū)動(dòng),就是指在主頁(yè)(HomePage)中執(zhí)行了某種操作所產(chǎn)生的動(dòng)作,就稱為“事件〞(Event)。比方按下鼠標(biāo)、移動(dòng)窗口、選擇菜單等都可以視為事件。當(dāng)事件發(fā)生后,可能會(huì)引起相應(yīng)的事件響應(yīng)。JavaScript是依賴于瀏覽器本身,與操作環(huán)境無(wú)關(guān),只要能運(yùn)行瀏覽器的計(jì)算機(jī),并支持JavaScript的瀏覽器就可正確執(zhí)行。從而實(shí)現(xiàn)了“編寫(xiě)一次,走遍天下〞的夢(mèng)想。實(shí)際上JavaScript最杰出之處在于可以用很小的程序做大量的事。無(wú)須有高性能的電腦,軟件僅需一個(gè)字處理軟件及一瀏覽器,無(wú)須WEB效勞器通道,通過(guò)自己的電腦即可完成所有的事情。2.5JSPJSP〔JavaServerPages)是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。用JSP開(kāi)發(fā)的Web應(yīng)用是跨平臺(tái)的,既能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。JSP技術(shù)使用Java編程語(yǔ)言編寫(xiě)類XML的tags和scriptlets,來(lái)封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯。網(wǎng)頁(yè)還能通過(guò)tags和scriptlets訪問(wèn)存在于效勞端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示別離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開(kāi)發(fā)變得迅速和容易。Web效勞器在遇到訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)等,以實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)頁(yè)所需要的功能。JSP與JavaServlet一樣,是在效勞器端執(zhí)行的,通常返回給客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP的1.0標(biāo)準(zhǔn)的最后版本是1999年9月推出的,12月又推出了1.1標(biāo)準(zhǔn)。目前較新的是JSP1.2標(biāo)準(zhǔn),JSP2.0標(biāo)準(zhǔn)的征求意見(jiàn)稿也已出臺(tái)。JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。效勞器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。JavaServlet是JSP的技術(shù)根底,而且大型的Web應(yīng)用程序的開(kāi)發(fā)需要JavaServlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡(jiǎn)單易用,完全的面向?qū)ο?,具有平臺(tái)無(wú)關(guān)性且平安可靠,主要面向因特網(wǎng)的所有特點(diǎn)。自JSP推出后,眾多大公司都支持JSP技術(shù)的效勞器,如IBM、Oracle、Bea公司等,所以JSP迅速成為商業(yè)應(yīng)用的效勞器端語(yǔ)言。JSP可用一種簡(jiǎn)單易懂的等式表示為:HTML+Java=JSP。JSP技術(shù)的特點(diǎn):一次編寫(xiě),到處運(yùn)行。除了系統(tǒng)之外,代碼不用做任何更改。系統(tǒng)的多平臺(tái)支持。根本上可以在所有平臺(tái)上的任意環(huán)境中開(kāi)發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。相比ASP/.net的局限性是顯而易見(jiàn)的。強(qiáng)大的可伸縮性。從只有一個(gè)小的Jar文件就可以運(yùn)行Servlet/JSP,到由多臺(tái)效勞器進(jìn)行集群和負(fù)載均衡,到多臺(tái)Application進(jìn)行事務(wù)處理,消息處理,一臺(tái)效勞器到無(wú)數(shù)臺(tái)效勞器,Java顯示了一個(gè)巨大的生命力。多樣化和功能強(qiáng)大的開(kāi)發(fā)工具支持。這一點(diǎn)與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開(kāi)發(fā)工具,而且許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺(tái)之下。支持效勞器端組件。web應(yīng)用需要強(qiáng)大的效勞器端組件來(lái)支持,開(kāi)發(fā)人員需要利用其他工具設(shè)計(jì)實(shí)現(xiàn)復(fù)雜功能的組件供web頁(yè)面調(diào)用,以增強(qiáng)系統(tǒng)性能。JSP可以使用成熟的JAVABEANS組件來(lái)實(shí)現(xiàn)復(fù)雜商務(wù)功能。與ASP一樣,Java的一些優(yōu)勢(shì)正是它致命的問(wèn)題所在。正是由于為了跨平臺(tái)的功能,為了極度的伸縮能力,所以極大的增加了產(chǎn)品的復(fù)雜性。Java的運(yùn)行速度是用class常駐內(nèi)存來(lái)完成的,所以它在一些情況下所使用的內(nèi)存比起用戶數(shù)量來(lái)說(shuō)確實(shí)是“最低性能價(jià)格比〞了。從另一方面,它還需要硬盤(pán)空間來(lái)儲(chǔ)存一系列的.java文件和.class文件,以及對(duì)應(yīng)的版本文件。利用JSP技術(shù),動(dòng)態(tài)信息由JSP頁(yè)面來(lái)表現(xiàn),JSP頁(yè)面由安裝在Web效勞器或者使用JSP的應(yīng)用效勞器上的JSP引擎執(zhí)行。JSP引擎接受客戶端對(duì)JSP頁(yè)面的請(qǐng)求,并且生成JSP頁(yè)面作為對(duì)客戶端的響應(yīng)。JSP頁(yè)面通常被編譯成為JavaServlets,這是一個(gè)標(biāo)準(zhǔn)的Java擴(kuò)展。頁(yè)面開(kāi)發(fā)人員能夠訪問(wèn)全部的Java應(yīng)用環(huán)境,以利用Java技術(shù)的擴(kuò)展性和可移植性。當(dāng)JSP頁(yè)面第一次被調(diào)用時(shí),如果它還不存在,就會(huì)被編譯成為一個(gè)JavaServlets類,并且存儲(chǔ)在效勞器的內(nèi)存中。這就使得在接下來(lái)的對(duì)該頁(yè)面的調(diào)用中,效勞器會(huì)有非??斓捻憫?yīng)〔這防止了CGI-BIN為每個(gè)請(qǐng)求生成一個(gè)新的進(jìn)程的問(wèn)題〕。JSP頁(yè)面可以包含在多種不同的應(yīng)用體系結(jié)構(gòu)或者模型中,可以用于由不同協(xié)議、組件和格式所組成的聯(lián)合體中。基于JSP的動(dòng)態(tài)信息發(fā)布技術(shù)是一個(gè)開(kāi)放的、可擴(kuò)展的建立動(dòng)態(tài)Web頁(yè)面的標(biāo)準(zhǔn)。不管采用什么創(chuàng)立工具,開(kāi)發(fā)人員都可以使用JSP頁(yè)面來(lái)創(chuàng)立可移植的Web應(yīng)用,在不同的Web應(yīng)用效勞器上運(yùn)行。2.6TomcatTomcat是Apache軟件基金會(huì)〔ApacheSoftwareFoundation〕的Jakarta工程中的一個(gè)核心工程,由Apache、Sun和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP標(biāo)準(zhǔn)總是能在Tomcat中得到表達(dá),Tomcat5支持最新的Servlet2.4和JSP2.0標(biāo)準(zhǔn)。因?yàn)門(mén)omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛(ài)好者的喜愛(ài)并得到了局部軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用效勞器。目前最新版本是7.0。Tomcat是一個(gè)輕量級(jí)應(yīng)用效勞器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP程序的首選。對(duì)于一個(gè)初學(xué)者來(lái)說(shuō),可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置好Apache效勞器,可利用它響應(yīng)對(duì)HTML頁(yè)面的訪問(wèn)請(qǐng)求。實(shí)際上Tomcat局部是Apache效勞器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat時(shí),它實(shí)際上作為一個(gè)與Apache獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。2.7ExtJS框架ExtJS可以用來(lái)開(kāi)發(fā)RIA也即富客戶端的AJAX應(yīng)用,是一個(gè)用javascript寫(xiě)的,主要用于創(chuàng)立前端用戶界面,是一個(gè)與后臺(tái)技術(shù)無(wú)關(guān)的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各種開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)的應(yīng)用中。ExtJs最開(kāi)始基于YUI技術(shù),由開(kāi)發(fā)人員JackSlocum開(kāi)發(fā),通過(guò)參考JavaSwing等機(jī)制來(lái)組織可視化組件,無(wú)論從UI界面上CSS樣式的應(yīng)用,到數(shù)據(jù)解析上的異常處理,都可算是一款不可多得的JavaScript客戶端技術(shù)的精品。ExtJs初期僅是對(duì)Yahoo!UI的對(duì)話框擴(kuò)展,后來(lái)逐漸有了自己的特色,深受網(wǎng)友的喜愛(ài)。開(kāi)展至今,Ext除YUI外還支持Jquery、Prototype等的多種JS底層庫(kù),讓大家自由地選擇。該框架完全基于純Html/CSS+JS技術(shù),提供豐富的跨瀏覽器UI組件,靈活采用JSON/XML數(shù)據(jù)源開(kāi)發(fā),使得效勞端表示層的負(fù)荷真正減輕,從而到達(dá)客戶端的MVC應(yīng)用!ExtJs支持多平臺(tái)下的主流瀏覽器InternetExplorer6+FireFox1.5+(PC,Mac)Safari2+、Opera9+。在使用的廠家包括IBM、Adobe、Cisco和更多。ExtJs官方網(wǎng)站。JQuery、Prototype和YUI都屬于非常核心的JS庫(kù)。雖然YUI,還有最近的JQuery,都給自己構(gòu)建了一系列的UI器件〔Widget〕,不過(guò)卻沒(méi)有一個(gè)真正的整合好的和完整的程序開(kāi)發(fā)平臺(tái)。哪怕是這些低層的核心庫(kù)已經(jīng)非常不錯(cuò)了,但當(dāng)投入到真正的開(kāi)發(fā)環(huán)境中,依然需要開(kāi)發(fā)者做大量的工作去完善很多缺失之處。而Ext就是要填補(bǔ)這些缺口。主流開(kāi)源框架中只有Dojo像Ext一樣,嘗試著提供整合的開(kāi)發(fā)平臺(tái)。相比Dojo這個(gè)出色的工具包,我們認(rèn)為Ext能提供一個(gè)粘合度更高的應(yīng)用程序框架。Ext的各個(gè)組件在設(shè)計(jì)之時(shí)就要求和其它Ext組件組合一起工作是無(wú)縫合作的。這種流暢的互通性,離不開(kāi)一個(gè)緊密合作的團(tuán)隊(duì),還必須時(shí)刻強(qiáng)調(diào)設(shè)計(jì)和開(kāi)發(fā)這兩方面目標(biāo)上的統(tǒng)一,而這點(diǎn)是很多開(kāi)源工程未能做到的。從構(gòu)建每一個(gè)組件開(kāi)始,我們始終都強(qiáng)調(diào)組件的外觀、性能、互通性和可擴(kuò)展性,而我們認(rèn)為組件已經(jīng)到達(dá)了這幾點(diǎn)的要求。Ext絕對(duì)可以單獨(dú)使用。實(shí)際上,除了有特定的要求,推薦單獨(dú)使用Ext,這樣的話文件占位更小,支持和整合也更緊密。我們也支持與jQuery、YUI或Prototype整合使用,作為低層庫(kù)的角色出現(xiàn),以提供處理各種核心的效勞,如DOM和事件處理,Ajax連接和動(dòng)畫(huà)特效。使用整合方式的一個(gè)原因是它們已具備了一些特定的器件而Ext并沒(méi)有原生支持——像YUI的History控件便是一個(gè)典型的例子。這時(shí),Ext需要依賴YUI這個(gè)庫(kù)的底層來(lái)實(shí)現(xiàn)History控件,這樣一來(lái)的話也可免去Ext自身底層庫(kù),從而減少了整個(gè)程序的內(nèi)存占用。另一個(gè)使用整合方式的原因是,對(duì)于許多已在使用其他底層庫(kù)的程序,你可能希望逐步參加Ext??傊?,如果已經(jīng)有了其他庫(kù),Ext可已利用它們。我們的宗旨是為用戶提供各種可能性和性能上的優(yōu)化。而事實(shí)是,只要實(shí)現(xiàn)了相對(duì)應(yīng)的底層庫(kù)接口,為任意一個(gè)框架添加上適配器是沒(méi)有問(wèn)題的——人們可以輕松地將Dojo、Moo、AjaxNET,或其它JS庫(kù)轉(zhuǎn)變?yōu)镋xt的底層。在工程中,Ext本身的華美外表就很吸引眼球了,但這僅僅是其外在的美,還有最核心的內(nèi)在美,即:Json。Json(JavaScriptObjectNotation)是一種數(shù)據(jù)交互格式,一個(gè)不能實(shí)現(xiàn)數(shù)據(jù)交互功能的工程是沒(méi)有任何意義的,大多的Ajax框架的數(shù)據(jù)交互都基于Json,如:jQuery、ExtJs等。因此理解Json掌握J(rèn)son并熟練運(yùn)用是很重要的。以目前主流的開(kāi)發(fā)語(yǔ)言為例,.NET已經(jīng)把Json封裝到類中,無(wú)需配置,直接與數(shù)據(jù)庫(kù)交互,輕松的封裝直接使用;Java就麻煩些,必須去下一個(gè)Json包,然后再做一些配置,才可以使用;PHP和Java差不多,也必須下載一個(gè)Json插件〔和類相似〕,但是不用配置,直接封裝使用。在實(shí)際的工程中,各自的取舍配置,都基于工程和需求,并不是每個(gè)工程〔針對(duì)WEB〕都一定要用到。但是,如果想在工程中用到此類的Ajax框架,Json的掌握又是必須的。在本系統(tǒng)中,由于要實(shí)現(xiàn)各種Ajax操作以及下拉列表從數(shù)據(jù)庫(kù)中讀取信息等操作,所以我選用extjs來(lái)實(shí)現(xiàn)。2.8MVC設(shè)計(jì)模式MVC是三個(gè)單詞的縮寫(xiě),分別為:模型(Model),視圖(View)和控制Controller)。MVC模式的目的就是實(shí)現(xiàn)Web系統(tǒng)的職能分工。Model層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂肑avaBean或EJB來(lái)實(shí)現(xiàn)。View層用于與用戶的交互,通常用JSP來(lái)實(shí)現(xiàn)。Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請(qǐng)求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。MVC本來(lái)是存在于Desktop程序中的,M是指數(shù)據(jù)模型,V是指用戶界面,C那么是控制器。使用MVC的目的是將M和V的實(shí)現(xiàn)代碼別離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式。比方一批統(tǒng)計(jì)數(shù)據(jù)你可以分別用柱狀圖、餅圖來(lái)表示。C存在的目的那么是確保M和V的同步,一旦M改變,V應(yīng)該同步更新。模型-視圖-控制器〔MVC〕是XeroxPARC在八十年代為編程語(yǔ)言Smalltalk-80創(chuàng)造的一種軟件設(shè)計(jì)模式,至今已被廣泛使用。最近幾年被推薦為Oracle旗下Sun公司JavaEE平臺(tái)的設(shè)計(jì)模式,并且受到越來(lái)越多的使用ColdFusion和PHP的開(kāi)發(fā)者的歡迎。視圖是用戶看到并與之交互的界面。對(duì)老式的Web應(yīng)用程序來(lái)說(shuō),視圖就是由HTML元素組成的界面,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮,它們包括MacromediaFlash和象XHTML,XML/XSL,WML等一些標(biāo)識(shí)語(yǔ)言和Webservices。何處理應(yīng)用程序的界面變得越來(lái)越有挑戰(zhàn)性。MVC一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒(méi)有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還是一個(gè)雇員列表,作為視圖來(lái)講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)那么。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。例如它可能用象EJBs和ColdFusionComponents這樣的構(gòu)件對(duì)象來(lái)處理數(shù)據(jù)庫(kù)。被模型返回的數(shù)據(jù)是中立的,就是說(shuō)模型與數(shù)據(jù)格式無(wú)關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫(xiě)一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性??刂破鹘邮苡脩舻妮斎氩⒄{(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁(yè)面中的超鏈接和發(fā)送HTML表單時(shí),控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后再確定用哪個(gè)視圖來(lái)顯示返回的數(shù)據(jù)。系統(tǒng)需求分析系統(tǒng)可行性分析(1)技術(shù)上的可行性該系統(tǒng)所需硬件設(shè)備,如效勞器、PC機(jī)、打印機(jī)及網(wǎng)絡(luò)配件等,這些設(shè)備在性能上已經(jīng)有了很大提高,價(jià)格又相對(duì)較低,能滿足系統(tǒng)功能需求。軟件上,操作系統(tǒng)采用Windows2000,WindowsNT、WindowsXP、等平臺(tái),采用C/S體系結(jié)構(gòu)。該系統(tǒng)的前臺(tái)使用JAVA;后臺(tái)數(shù)據(jù)庫(kù)使用MicrosoftSQLServer2000。開(kāi)發(fā)工具使用Eclipse。這些軟件在MIS開(kāi)發(fā)中已被大量應(yīng)用,技術(shù)上都比較成熟。因此技術(shù)上是可行的?!?〕經(jīng)濟(jì)上的可行性網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)是互聯(lián)網(wǎng)和用戶的關(guān)系接口,為客戶及時(shí)提供有用的信息。本系統(tǒng)屬于一個(gè)實(shí)用型的系統(tǒng),它可以節(jié)省工作人員大量數(shù)據(jù)收集、錄入、整理、查詢、修改等手工操作,而且迅速準(zhǔn)確,能夠極大地提高工作效率,同時(shí)促進(jìn)業(yè)務(wù)的標(biāo)準(zhǔn)化、程序化。系統(tǒng)開(kāi)發(fā)所需的費(fèi)用是比較低的,由于系統(tǒng)并不復(fù)雜,可以預(yù)見(jiàn)系統(tǒng)完成后可以帶來(lái)較大的經(jīng)濟(jì)效益?!?〕管理上的可行性網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)是建立于科學(xué)管理根底之上的,只有在合理的管理體制以及完整、準(zhǔn)確的原始數(shù)據(jù)的根底上,才能有效的開(kāi)發(fā)出管理信息系統(tǒng)。綜上所述,在技術(shù)上、經(jīng)濟(jì)上、管理上都是可行的,因此,基于Java網(wǎng)絡(luò)爬蟲(chóng)的研究與實(shí)現(xiàn)是可行的。需求分析為了開(kāi)發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求,對(duì)軟件需求的深入理解是軟件開(kāi)發(fā)工作獲得成功的前提條件。所以要設(shè)計(jì)并實(shí)現(xiàn)一個(gè)軟件系統(tǒng),關(guān)鍵在于應(yīng)該進(jìn)行需求分析。需求分析是發(fā)現(xiàn)、求精、建摸、規(guī)格說(shuō)明和復(fù)審的過(guò)程。需求分析的第一步是進(jìn)一步了解用戶當(dāng)前所處的情況,發(fā)現(xiàn)用戶所面臨的問(wèn)題和對(duì)目標(biāo)系統(tǒng)的根本需求;接下來(lái)應(yīng)該與用戶深入交流,對(duì)用戶的根本需求反復(fù)細(xì)化逐步求精,以得出對(duì)目標(biāo)系統(tǒng)的完整、準(zhǔn)確和具體的需求。用戶需求本系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)是針對(duì)互聯(lián)網(wǎng)用戶而言的,所以它的出發(fā)點(diǎn)是必須滿足普通用戶檢索的需求。檢索系統(tǒng)是本系統(tǒng)的重點(diǎn),它是保證系統(tǒng)的需求和穩(wěn)定性,同時(shí)為用戶提供有用信息。性能需求系統(tǒng)的靈活性:能夠適應(yīng)較大范圍的管理要求,管理系統(tǒng)應(yīng)當(dāng)具有很好的靈活性。系統(tǒng)的可擴(kuò)展性:信息發(fā)布系統(tǒng)的可擴(kuò)展性主要表現(xiàn)在對(duì)于不同類別的信息具體要求可能有所不同,為了適應(yīng)多種需要,就要求能夠按需添加模塊,對(duì)系統(tǒng)進(jìn)行提升。系統(tǒng)的平安性:系統(tǒng)需要顧及到信息平安合法的原那么,那么對(duì)權(quán)限就有一定的要求,所以要嚴(yán)格控制對(duì)系統(tǒng)的訪問(wèn),具體要求如下:〔1〕操作系統(tǒng)需要有一套權(quán)限控制,只有具備權(quán)限的管理人員才能夠進(jìn)行相應(yīng)操作,沒(méi)有權(quán)限的人無(wú)法通過(guò)任何途徑查看或修改系統(tǒng)參數(shù)對(duì)系統(tǒng)的資料進(jìn)行管理?!?〕系統(tǒng)還應(yīng)記錄下不同操作人員的操作過(guò)程及發(fā)布時(shí)間,對(duì)各種操作進(jìn)行日志管理,如信息的錄入和修改,那樣就可以在出現(xiàn)意外的時(shí)候進(jìn)行責(zé)任追究?!?〕系統(tǒng)失效后會(huì)給出錯(cuò)誤信息,恢復(fù)的方法將采用結(jié)束當(dāng)前任務(wù)或重新啟動(dòng)計(jì)算機(jī)?!?〕隨著計(jì)算機(jī)的開(kāi)展,所有的開(kāi)發(fā)人員要發(fā)現(xiàn)在此過(guò)程中本產(chǎn)品出的問(wèn)題和缺乏,及時(shí)更新。3.2.3功能需求通過(guò)對(duì)現(xiàn)行的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的分析和研究,網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)不僅要高效率的完成各種信息的管理,并能標(biāo)準(zhǔn)和合理的進(jìn)行科學(xué)的分析統(tǒng)計(jì)。下面是對(duì)該系統(tǒng)所必須具有功能的需求分析。〔1〕本地搜索:其中包括〔關(guān)鍵字輸入,本地檢索范圍,過(guò)濾無(wú)用信息〕?!?〕網(wǎng)絡(luò)搜索:其中包括〔關(guān)鍵字輸入,要爬行的網(wǎng)址,過(guò)濾無(wú)用信息〕。4系統(tǒng)的總體設(shè)計(jì)4.1系統(tǒng)體系分析B/S結(jié)構(gòu)即瀏覽器和效勞器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過(guò)WWW瀏覽器來(lái)實(shí)現(xiàn),極少局部事務(wù)邏輯在前端〔Browser〕實(shí)現(xiàn),但是主要事務(wù)邏輯在效勞器端〔Server〕實(shí)現(xiàn),形成所謂三層3-tier結(jié)構(gòu)。這樣就大大簡(jiǎn)化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的本錢(qián)和工作量,降低了用戶的總體本錢(qián)〔TCO〕。B/S結(jié)構(gòu)最大的優(yōu)點(diǎn)就是可以在任何地方進(jìn)行操作而不用安裝任何專門(mén)的軟件。只要有一臺(tái)能上網(wǎng)的電腦就能使用,客戶端零維護(hù)。系統(tǒng)的擴(kuò)展非常容易,只要能上網(wǎng),再由系統(tǒng)管理員分配一個(gè)用戶名和密碼,就可以使用了。系統(tǒng)功能結(jié)構(gòu)如圖4-1所示的系統(tǒng)功能結(jié)構(gòu)圖,如下列圖:進(jìn)入系統(tǒng)的主界面。主界面主要分為本地搜索和網(wǎng)絡(luò)搜索兩大模塊。點(diǎn)擊本地搜索,您可以通過(guò)輸入關(guān)鍵字來(lái)爬行本地網(wǎng)頁(yè)本件,進(jìn)而跳轉(zhuǎn)至查詢結(jié)果頁(yè)面。點(diǎn)擊網(wǎng)絡(luò)搜索,您要先輸入您要檢索的網(wǎng)址,然后輸入檢索的關(guān)鍵字,后臺(tái)進(jìn)行處理,最后會(huì)跳轉(zhuǎn)至查詢結(jié)果頁(yè)面。網(wǎng)絡(luò)爬蟲(chóng)搜索系統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)搜索系統(tǒng)網(wǎng)絡(luò)搜索本地搜索網(wǎng)絡(luò)搜索本地搜索結(jié)果查詢輸入關(guān)鍵字輸入關(guān)鍵字輸入爬行的網(wǎng)址結(jié)果查詢結(jié)果查詢輸入關(guān)鍵字輸入關(guān)鍵字輸入爬行的網(wǎng)址結(jié)果查詢圖4-1系統(tǒng)功能結(jié)構(gòu)圖系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)這一設(shè)計(jì)階段是在前面各需求分析的根底上,設(shè)計(jì)出能夠滿足用戶需求的各種實(shí)體,以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下根底。根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有關(guān)鍵字管理,查詢結(jié)果管理。各個(gè)實(shí)體圖及其關(guān)系描述:關(guān)鍵字管理關(guān)鍵字管理URL信息日期信息關(guān)鍵字信息圖4-2關(guān)鍵字管理圖 查詢結(jié)果管理查詢結(jié)果管理結(jié)果信息關(guān)聯(lián)的關(guān)鍵字信息圖4-3查詢結(jié)果管理圖4.3.2數(shù)據(jù)表設(shè)計(jì)表是系統(tǒng)的核心局部,所以表的設(shè)計(jì)是重中之中。本系統(tǒng)數(shù)據(jù)庫(kù)采用MySQL數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名稱為crawle,共2張表。下面分別給出數(shù)據(jù)表概要說(shuō)明及要求數(shù)據(jù)表的結(jié)構(gòu)。關(guān)鍵字表(keysearch)表4.1keysearch表名稱數(shù)據(jù)類型大小約束可否為空描述idint11主鍵No標(biāo)識(shí)urlchar100No爬行網(wǎng)址search_keychar50No關(guān)鍵字datedate8No插入日期查詢結(jié)果表(resultbykey)表4.2resultbykey表名稱數(shù)據(jù)類型大小約束可否為空描述idint11主鍵No標(biāo)識(shí)urlchar100No結(jié)果網(wǎng)址titlechar100No網(wǎng)址標(biāo)題contentchar255No內(nèi)容datedate8No插入日期keySearch_idint11外鍵No結(jié)果標(biāo)識(shí)5代碼設(shè)計(jì)與實(shí)現(xiàn)5.1初始頁(yè)面的設(shè)計(jì)運(yùn)行程序,將彈出一個(gè)首頁(yè),如圖5-1:圖5-1首頁(yè)圖用戶可以根據(jù)自己的需要是在本地搜索,還是在網(wǎng)絡(luò)中搜索,點(diǎn)擊超鏈接進(jìn)入。在頁(yè)面的左上角有返回(上一頁(yè))、刷新(當(dāng)前頁(yè)面)、(回到)首頁(yè)的超鏈接,方面用戶使用。主要代碼實(shí)現(xiàn):<body><table><tr> <td> <Ahref="javascript:history.back()">返回</A> <Ahref="javascript:location.reload()">刷新</A> <Ahref="index.jsp">首頁(yè)</A> </td> </tr></table><center><br><br><br><br><br><br> <h1>歡迎使用網(wǎng)絡(luò)爬蟲(chóng)搜索引擎</h1> <br><br> <ahref="localIndex.jsp"><fontsize="12">本地搜索</font></a><br> <ahref="remoteIndex.jsp"><fontsize="12">網(wǎng)絡(luò)搜索</font></a><br></center></body>上述核心代碼重點(diǎn)實(shí)現(xiàn)了超鏈接的設(shè)置、根本腳本語(yǔ)言的應(yīng)用。5.2主界面模塊主界面的設(shè)置清晰的顯示了該工程的各模塊,簡(jiǎn)單的頁(yè)面配上大大的2個(gè)超鏈接,充分的簡(jiǎn)化用戶的操作,使得頁(yè)面看起來(lái)清晰,使用起來(lái)方面。圖5-2主界面圖5.3本地搜索模塊進(jìn)入該模塊后,在文本框中輸入關(guān)鍵字后,點(diǎn)擊搜索按鈕。系統(tǒng)會(huì)跳轉(zhuǎn)到查詢結(jié)果頁(yè)面。圖5-3本地搜索輸入關(guān)鍵字圖圖5-4本地搜索圖其中實(shí)現(xiàn)本地搜索的核心代碼:publicstaticSet<HTMLBean>getAllHTML(Stringgjz){ Set<HTMLBean>shms=newHashSet<HTMLBean>(); Stringadd="D:/Workspaces/WLPC/WebContent"; Filef=newFile(add); File[]files=f.listFiles(); for(inti=0;i<files.length;i++){ Fileft=files[i]; if(ft.isDirectory()){ } elseif(ft.getName().contains(".jsp")){ //System.out.println(ft.getAbsolutePath()); HTMLBeanhn=Crawle.getOneHTML(ft.getAbsolutePath()); if(hn.getTitle().contains(gjz)||hn.getBody().contains(gjz)){ hn.setUlrName(ft.getName()); shms.add(hn); System.out.println("HTMLBean符合要求的有"+shms.size()); } } } returnshms; }publicstaticHTMLBeangetOneHTML(Stringulr){ Parserparser; Stringbody=""; Stringtitle=""; Set<String>ulrs=newHashSet<String>(); try{ parser=newParser(ulr); parser.setEncoding("gb2312"); HtmlPagehtmlpage=newHtmlPage(parser); parser.visitAllNodesWith(htmlpage); //通過(guò)htmlparser獲取body內(nèi)容 body=htmlpage.getBody().asString(); //通過(guò)htmlparser獲取title內(nèi)容 title=htmlpage.getTitle().toString(); //body=body.replace("[\\t\\n\\r\\f( |gt)]+",""); NodeFilterlinkFilter=newNodeClassFilter(LinkTag.class); NodeListnodelist=parser.extractAllNodesThatMatch(linkFilter); NodeIteratorit=nodelist.elements(); while(it.hasMoreNodes()){ LinkTaglinks=(LinkTag)it.nextNode(); System.out.println(links.extractLink()); ulrs.add(links.extractLink()); } } catch(Exceptione){e.printStackTrace();} HTMLBeanhb=newHTMLBean(title,body,ulrs);returnhb; }網(wǎng)絡(luò)搜索模塊一該模塊需要用戶先輸入要爬行搜索的網(wǎng)址,并且判斷該網(wǎng)址是否有效。如果輸入的網(wǎng)址是正確的,那么跳轉(zhuǎn)到下一個(gè)頁(yè)面,否那么清空文本框,在下面顯示紅色字提示。“爬行網(wǎng)址〞頁(yè)如圖5-4所示:圖5-5網(wǎng)絡(luò)搜索輸入爬行網(wǎng)址驗(yàn)證圖圖5-6網(wǎng)絡(luò)搜索輸入爬行網(wǎng)址圖主要實(shí)現(xiàn)代碼如下:functionIsUrl(){varmyUrl=Ext.get('textValue'); //Ext.Msg.alert('title',myUrl.getValue()); Ext.Ajax.request({ url:'IsRemote', success:sFn, failure:fFn, params:{myUrl:myUrl.getValue()} }) functionsFn(req){ varresult=req.responseText; if(result=='true'){ document.getElementById('div').innerHTML='<fontcolor=greensize=6>您輸入的網(wǎng)址可以正常訪問(wèn)</font>'; window.location.href='remoteIndex_suc.jsp' } elseif(result=='false'){ document.getElementById('div').innerHTML='<fontcolor=redsize=6>您輸入的網(wǎng)址不正確,請(qǐng)重新輸入</font>'; document.getElementById('textValue').value=''; } else{ document.getElementById('div').innerHTML='<fontcolor=redsize=6>未知錯(cuò)誤,請(qǐng)聯(lián)系管理員</font>'; } } functionfFn(){ document.getElementById('div').innerHTML='<fontcolor=redsize=6>Ajax連接地址錯(cuò)誤,請(qǐng)聯(lián)系管理員</font>'; }}//IsRemote.javarequest.setCharacterEncoding("gb2312"); response.setCharacterEncoding("gb2312"); StringmyUrl=request.getParameter("myUrl"); System.out.println(myUrl); booleanf=IsUrl.IsUrl(myUrl); System.out.println("IsRemote:"+f); if(f){ if(myUrl.contains("://")){ }else{ myUrl="://"+myUrl; } request.getSession().setAttribute("myUrl",myUrl); }else{ } response.getWriter().write(""+f);網(wǎng)絡(luò)搜索模塊二該模塊是在網(wǎng)絡(luò)搜索模塊一成功跳轉(zhuǎn)的根底上。用戶需要輸入關(guān)鍵字進(jìn)行檢索。初始進(jìn)入頁(yè)面,下拉框有聯(lián)想功能,頁(yè)面會(huì)自動(dòng)的讀取數(shù)據(jù)庫(kù)中的信息,把以前用戶所查詢過(guò)的關(guān)鍵字顯示在下拉列表中。實(shí)現(xiàn)如圖5-5:圖5-7網(wǎng)絡(luò)搜索關(guān)鍵字輸入圖在文本框中輸入關(guān)鍵字會(huì)有聯(lián)想功能或者按下鍵也會(huì)聯(lián)想搜索以前搜索過(guò)的關(guān)鍵字。圖5-8網(wǎng)絡(luò)搜索關(guān)鍵字自動(dòng)關(guān)聯(lián)圖5-9網(wǎng)絡(luò)搜索關(guān)鍵字自動(dòng)補(bǔ)全期間主要實(shí)現(xiàn)代碼:varstore=newExt.data.Store({ proxy:newExt.data.Proxy({url:'Keys'}), reader:newExt.data.JsonReader({ totalProperty:'totalCount', root:'result' },['id','name']), remoteSort:true });Ext.onReady(function(){ Ext.lib.Ajax.defaultPostHeader+=";charset=gb2312"; varform=newExt.form.FormPanel({ timeout:120000, border:false, renderTo:'div', labelAlign:'right', buttonAlign:'center', items:[ newExt.form.ComboBox({ text:'combo', id:'cb', hideTrigger:true, store:store, valueField:'id',//鍵 displayField:'name',//值 typeAhead:true, mode:'local', triggerAction:'all', emptyText:'請(qǐng)輸入關(guān)鍵字...', selectOnFocus:true, width:200, renderTo:Ext.getBody(), listeners:{ 'select':function(com){ }, 'onchange':function(){ alert('change'); } } })], buttons:[{ text:'搜索', handler:function(){ varss=Ext.getCmp('cb'); varsValue=ss.lastSelectionText; varsId=ss.getValue(); if(sValue==''||sValue==null){ Ext.Msg.alert('提示','您要檢索的關(guān)鍵字內(nèi)容不能為空!'); } else{ form.getForm().submit({ success:function(f,a){ //alert(f+"\t"+a); window.location.href=a.result.url; }, url:'DoCrawler', params:{keywords:sValue}, waitMsg:'正在提交,請(qǐng)稍等...' }); } } }] })store.load();});網(wǎng)絡(luò)搜索模塊三該模塊是在模塊二的根底上,當(dāng)用戶點(diǎn)擊搜索按鈕的時(shí)候,系統(tǒng)會(huì)進(jìn)行一系列的篩選,最后返回list,跳轉(zhuǎn)到查詢結(jié)果頁(yè)面。如圖5-6圖5-10查詢結(jié)果圖主要實(shí)現(xiàn)代碼為://DoCrawler.javarequest.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("gb2312"); IDaodao=newDaoImpl(); List<UrlBean>lub=null; System.out.println("DoCrawleServlet..."); Stringkey=request.getParameter("keywords"); System.out.println("key:"+key); Sessionsession=request.getSession(); StringmyUrl=""; if((null!=session.getAttribute("myUrl"))||(!"".equals(session.getAttribute("myUrl").toString()))){ myUrl=session.getAttribute("myUrl").toString(); } System.out.println("myUrl:"+myUrl); KeySearchBeanks=dao.queryExistKeysByUrl(key,myUrl); if(null==ks){ KeySearchBeanks_new=newKeySearchBean(); ks_new.setSearch_key(key); ks_new.setUrl(myUrl); booleanf1=dao.AddKeyBean(ks_new); if(f1){ System.out.println("關(guān)鍵字添加到表1成功"); } else{ System.out.println("關(guān)鍵字添加到表2失敗"); } System.out.println("數(shù)據(jù)庫(kù)中無(wú)此關(guān)鍵字信息,開(kāi)始網(wǎng)上查詢"); lub=Crawle.getAllByUrlAndKeywords(myUrl,key); System.out.println("lub:(DoCrawler)"+lub.size()); //獲取新參加表1的id值,進(jìn)而添加結(jié)果到表2 KeySearchBeanks3=dao.queryExistKeysByUrl(key,myUrl); intkeySearch_id=ks3.getId(); for(UrlBeanub:lub){ System.out.println(ub.getTitle()+"\t"+ub.getUrl()); dao.AddResultByKeyBean(ub,keySearch_id); } } else{ //數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電商大數(shù)據(jù)分析-全面剖析
- 2025-2030全球及中國(guó)浴室配件行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 2025-2030全球及中國(guó)匯款機(jī)構(gòu)行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 2025-2030全球及中國(guó)板條輸送機(jī)行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 2025-2030全球及中國(guó)出租車(chē)共享軟件行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 歐氏距離在多尺度數(shù)據(jù)分析中的優(yōu)化-全面剖析
- 2025-2030入侵報(bào)警系統(tǒng)產(chǎn)業(yè)市場(chǎng)深度分析及前景趨勢(shì)與投資研究報(bào)告
- 2025-2030兒童用藥產(chǎn)業(yè)政府戰(zhàn)略管理與區(qū)域發(fā)展戰(zhàn)略研究報(bào)告
- 2025-2030假牙線行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 世界語(yǔ)在廣播媒體中的應(yīng)用研究論文
- 鋼筋籠(螺旋箍筋)工程量自動(dòng)計(jì)算表
- 標(biāo)準(zhǔn)入庫(kù)授權(quán)委托書(shū)
- 雅駿新能源汽車(chē)廢舊動(dòng)力蓄電池梯次應(yīng)用項(xiàng)目環(huán)境影響報(bào)告
- 克雅氏病課件
- 馬原第四章資本主義的本質(zhì)及規(guī)律
- 做自己:大學(xué)生職業(yè)生涯發(fā)展智慧樹(shù)知到答案章節(jié)測(cè)試2023年哈爾濱工程大學(xué)
- 中國(guó)核工業(yè)集團(tuán)794礦4.6有害氣體中毒事故分析
- 新音樂(lè)初放 學(xué)堂樂(lè)歌說(shuō)課課件
- 對(duì)外漢語(yǔ)教學(xué)法智慧樹(shù)知到答案章節(jié)測(cè)試2023年西北師范大學(xué)
- 樂(lè)泰膠用戶手冊(cè)
- 社會(huì)工作行政教案
評(píng)論
0/150
提交評(píng)論