1、 第 37 页 共 37 页1 绪论1.1 课题的研究背景随着计算机网络的不断发展,越来越多的用户以及开发人员深切地感受到了计算机技术在搜索领域中的作用越来越重要,越来越要求搜索引擎执行效率。掌握计算机是生活的需要,是职业的需要,更是产业发展的需要,更是为了创造更高的经济利润的需要。信息在社会和经济的发展中所起的作用越来越为人们所重视。随着网络的迅速发展,万维网称为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。在计算机的三大主要应用领域(科学计算、数据处理与过程控制)中,数据处理的比重约占70%左右。计算机
2、作为信息处理的工具,为适应数据处理需求的迅速提高,满足各类信息系统对数据管理的要求,在文件系统的基础上发展起了数据库系统。 数据库技术产生于60年代末,70年代初期,其主要目的是有效地管理和存取大量的数据资源。数据库技术主要研究如何存储、使用和管理数据,是计算机数据管理技术发展的最新阶段。数据库存储的是通用化的相关数据集合,它不仅包括数据本身,而且包括数据之间的联系。30多年来,数据库在理论上、实现技术上均得到很大的发展,研制出许多商用数据库管理系统,使得计算机应用渗透到各行各业的各类管理工作中。现在,数据库技术已成为计算机领域里最重要的技术之一,是软件学科的一个独立分支。近年来,数据库技术和
3、计算机网络技术的发展相互渗透、相互促进,已成为当今计算机领域内发展迅速、应用广泛的两大领域。数据库系统是数据处理的核心机构,售楼管理系统、办公自动化系统、决策支持系统等都是使用了数据库管理系统或数据库技术的计算机应用系统。 互联网已经进入大家的生活,利用互联网来获取有价值的信息势在必行。本课题主要是实现一个搜索引擎,主要功能是抓取网络上的网页中的信息,进行过滤返回相关有用的信息。通过本系统,用户只需输入关键字,系统进行处理后,将会返回与关键字相关联的信息。1.2 课题的研究现状目前为止,随着互联网的普及,使用计算机的人越来越多,那么需要查找信息的的功能就越显得重要。从而使得搜索引擎应需求而生,
4、搜索引擎作为一个辅助人们检索信息的工具已经显得越来越重要。搜索引擎按其工作方式可以分为三种,分别是全文搜索引擎,目录搜索类引擎和元搜索引擎。全文搜索引擎是常用的搜索引擎,大家最熟悉的就是国外的代表Google,和国内的百度。它们通常都是提取各个网站的网页文字存放在建立的数据库中,检索与用户查询条件匹配的相关记录,然后按其自己设定的排列数序将结果返回给用户。目录索引,就是将网站分类,然后存放在响应的目录里,用户在查询所需要的内容时有两种选择,一种是关键字搜索,另一种是按分类目录一层一层的查找。目录索引只能说有搜索功能,但仅仅是按照目录分类的网站链接列表。用户完全可以不用进行关键字查询,仅靠分类目
5、录也可以找到需要的信息。目录搜索型引擎中最具代表性的是Yahoo。元搜索引擎可以同时在其他多个引擎上进行搜索,将搜索结果进行统一处理,并将结果以统一 的格式返回给用户。正因为如此,这类搜索引擎的有点是返回结果的信息量更全面,但是缺点就是无用的信息太多不能准确的找到用户所需要的结果。在搜索结果排列方面,不通的元搜索引擎有不通的结果排列的方式,如Dogpile,就直接按来源引擎排列搜索结果,如Vivisimo,是按自定的规则将结果重新进行排列。网络快速发展的今天,互联网承载着海量的信息,能够准确快速的提取我们所需要的信息是现在的挑战。传统的搜索引擎有Yahoo,Google,百度等,这些检索信息的
6、工具是每天访问互联网的必经之路。但是,这些传统性搜索引擎存在着局限性,它不能全面的准确的找到所需要的信息,也会使一些和需求无关的内容一起搜索到。严重的降低了使用这些信息的效率,所以说提高检索信息的速度和质量是一个专业搜索引擎的主要研究内容。1.3 课题的研究意义网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其
7、放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。在这些学科的基础上,形成信息收集和加工的方法,从而形成一个实用的、高效的系统。1.4 课题的发展趋势网络爬虫有两种描述方式,一种是基于目标数据模式的爬虫针对的是网页上的数据,所抓取的数据一般要符合一定的模式,或者可以转化或映射为目标数据模式,另一种描述方式是建立目标领域的本地或词典,
8、用于从语义角度分析不同特征在同一主题的重要程度。随着AJAX/Web2.0的流行,如何抓取AJAX等动态页面成了搜索引擎急需解决的问题。如果引擎依旧采用爬的机制,是无法抓取到AJAX页面的有效数据的。对于AJAX这样的技术,所需要的爬虫引擎必须是基于驱动的。如果想要实现事件驱动,首先需要解决以下问题:第一,JavaScript的交互分析和解释;第二,DOM事件的处理和解释分发;第三,动态DOM内容语义的抽取。1.5 课题的主要内容介绍本论文共分为5个章节,分别为:绪论、系统相关技术的研究、系统需求分析、系统的总体设计和代码设计与实现。第一章绪论,共分为课题的研究背景、研究现状、研究意义、发展趋
9、势和主要内容介绍等5条,从整体上对本课题进行了分析,使得对于本课题的开发过程有一个大概的了解。第二章是系统相关技术的研究,主要介绍了本课题所采用的各种相关技术。首先介绍了JAVA,说明开发本课题的主要技术是怎样使用的。然后介绍了所用到的后台的数据库,以及与数据库的连接技术。最后介绍了开发过程中用到的JAVA相关的技术的使用,并分析了该技术的特性。第三章是系统需求分析,从系统的可行性方面和需求方面来分析系统的需求,可行性分析是从技术、经济上和管理上来进行阐述最后得出结论有必要开发这个系统;而需求分析是从用户的角度、系统资源方面、性能需求方面以及功能需求方面来对系统进行分析。第四章是系统的总体设计
10、,从系统的设计分析、数据表的结构规划对系统进行总体设计,其中设计分析是用了系统功能分析,系统功能模块设计,数据库需求分析,数据库设计,覆盖了需求分析中所要求达到的功能需求。第五章是代码设计与实现,系统分为本地搜索、网络搜索两大模块组成,每个部分又可以分成很多小模块。每个模块进行截图分析设计的同时都进行详细设计,写出了它们的关键代码。2 系统相关技术的研究2.1 JAVA简介 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web
11、、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java分为三个体系J
12、ava SE(Java2 Platform Standard Edition,java平台标准版),Java EE(Java 2 Platform Enterprise Edition,java平台企业版),Java ME(Java 2 Platform Micro Edition,java平台微型版)。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势
13、和广阔前景。Java的特点:1、 Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、 Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用
14、动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、 Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4、 Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。 5、 Java语言是安
15、全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、 Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。7、 Java语言
16、是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。 8、 Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9、 Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-T
17、ime)编译器技术的发展越来越接近于C+。10、 Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机
18、制(关键字为synchronized)。11、 Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业
19、应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。2.2 MySQL 数据库简介MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。相对于其它系统而言,MySQL数据库可以称得上是目前运行速度最快的SQL语言数据库。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(
20、MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。MySQL还具有以下特点:1 同时访问数据库的用户数量不受限制。2 可保存超过50,000,000条记录。3 是目前市场上现有产品中运行速度最快的数据库系统。4 用户权限设置简单、有效。5 使用C和C+编写,并使用了多种编译器进行测试,保证了源代码的可移植性。6 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD
21、、OS/2 Wrap、Solaris、Windows等多种操作系统。7 为多种编程语言提供了API。8 支持多线程,充分利用CPU资源。9 优化SQL查询算法,有效地提高查询速度。10 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。11 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。12 提供用于管理、检查、优化数据库操作的管理工具。13 可以处理用户上千万记录的大型数据库。14 支持多种存储引擎。2.3 JAVA与数据库
22、连接本文说明的系统是利用MySQL厂商提供的驱动与数据库链接的。这种实现方法是直接使用数据库厂商提供的用专用的网络协议创建的驱动程序,通过它可直接将JDBC API调用转换为直接网络调用。这种调用方式性能好、简单易用。这种方法的通行方式如下:应用程序-JDBC API-驱动程序-数据源JDBC是一种可用于执行SQL语句的Java API,由一些Java语言写的类、界面组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是
23、说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQL Server。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。不但如此,使用Java编写的应用程序可以在任何支持Java的平如上运行,不必在不同的平台上编写不用的应用。Java和JDBC的结合可以让开发人员在开发数据库应用时真正实现“Write Once,Run Everywhere!”。Java具有健壮、安全、易用等特性,而且支持自动网上下载,本质上是一种很好的数据库应用的编程语言。它所需要的是Java应用如何同各种各样的数据库连接。JDB
24、C正是实现这种连接的关键。2.4 JavaScriptJavaScript是一种基于对象和事件驱动的客户端脚本语言。JavaScript最初的设计是为了检验HTML表单输入的正确性。JavaScript起源于Netscape公司的LiveScript语言。JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中连接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序 等。它是通过嵌入或调入到标准的HTML语言中实现的。它的出现弥
25、补了HTML语言的缺陷,它是Java与HTML折衷的选择。JavaScript最初起源于LiveScript语言,当互联网开始流行时,越来越多的网站开始使用HTML表单与用户交互,然而表单交互却成了制约网络发展的重大瓶颈(用户总是痛苦的等待数据传送到服务器端检测,并传回是否正确,仅仅的表单检测,就产生了多次客户端与服务器端交互)。于是Netscape公司推出了LiveScript语言,最后Netscape与Sun将LiveScript命名为JavaScript(当时JAVA是很时髦的互联网名词),随后微软开始了其野心勃勃的浏览器计划,并且推出了JScript,于是网络上出现了几种类似的Java
26、Script语言,但是没有统一的特性与语法(当时的JavaScript开发被看做是一场噩梦,因此很多程序员并不看好JavaScript)。最终JavaScript被提交到欧洲计算机制造商协会(ECMA),做为中立的ECMA开始了标准化脚本语言之路,并将其命名为ECMAScript。JavaScript特点:1、 JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程。它的基本结构形式与C、C+、VB、Delphi十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与H
27、TML标识结合在一起,从而方便用户的使用操作。2、 JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。3、 JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计, 从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。 4、 JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而
28、有效地防止数据的丢失。 5、 JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。 6、 JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行。从而实现了“编写一次,走遍天下”的梦想。实际上JavaScript最杰出之处在于可以用很小的程
29、序做大量的事。无须有高性能的电脑,软件仅需一个字处理软件及一浏览器,无须WEB服务器通道,通过自己的电脑即可完成所有的事情。 2.5 JSPJSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags
30、和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Java Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP的1.0规范的最
31、后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等
32、,所以JSP迅速成为商业应用的服务器端语言。JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。JSP技术的特点:1、 一次编写,到处运行。除了系统之外,代码不用做任何更改。2、 系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。 3、 强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。4、 多样化和功能强大的开发工具支持。
33、这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。5、 支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。6、 与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。7、 Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”
34、了。从另一方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及对应的版本文件。利用JSP技术,动态信息由JSP页面来表现,JSP页面由安装在Web服务器或者使用JSP的应用服务器上的JSP引擎执行。JSP引擎接受客户端对JSP页面的请求,并且生成JSP页面作为对客户端的响应。JSP页面通常被编译成为Java Servlets,这是一个标准的Java扩展。页面开发人员能够访问全部的Java应用环境,以利用Java技术的扩展性和可移植性。当JSP页面第一次被调用时,如果它还不存在,就会被编译成为一个Java Servlets类,并且存储在服务器的内存中。这就使得在接下来的对该
35、页面的调用中,服务器会有非常快的响应(这避免了CGIBIN为每个HTTP请求生成一个新的进程的问题)。JSP页面可以包含在多种不同的应用体系结构或者模型中,可以用于由不同协议、组件和格式所组成的联合体中。基于JSP的动态信息发布技术是一个开放的、可扩展的建立动态Web页面的标准。不论采用什么创建工具,开发人员都可以使用JSP页面来创建可移植的Web应用,在不同的Web应用服务器上运行。2.6 TomcatTomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
36、由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是7.0。Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomca
37、t 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。2.7 ExtJS框架ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。ExtJs最开始基于YUI技术,由开发人员JackSlocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是一款不可多得的Java
38、Script客户端技术的精品。 ExtJs初期仅是对Yahoo! UI的对话框扩展,后来逐渐有了自己的特色,深受网友的喜爱。 发展至今, Ext除YUI外还支持Jquery、Prototype等的多种JS底层库,让大家自由地选择。该框架完全基于纯Html/CSS+JS技术,提供丰富的跨浏览器UI组件,灵活采用JSON/XML数据源开发,使得服务端表示层的负荷真正减轻,从而达到客户端的MVC应用! ExtJs支持多平台下的主流浏览器 Internet Explorer 6+ FireFox 1.5+ (PC, Mac) Safari2+、Opera9+。在使用的厂家包括IBM、Adobe、Cis
39、co和更多。ExtJs官方网站。JQuery、Prototype和YUI都属于非常核心的JS库。虽然YUI,还有最近的JQuery,都给自己构建了一系列的UI器件(Widget),不过却没有一个真正的整合好的和完整的程序开发平台。哪怕是这些低层的核心库已经非常不错了,但当投入到真正的开发环境中,依然需要开发者做大量的工作去完善很多缺失之处。而Ext就是要填补这些缺口。主流开源框架中只有Dojo像Ext一样,尝试着提供整合的开发平台。相比Dojo这个出色的工具包,我们认为 Ext能提供一个粘合度更高的应用程序框架。Ext的各个组件在设计之时就要求和其它Ext组件组合一起工作是无缝合作的。这种流畅
40、的互通性,离不开一个紧密合作的团队,还必须时刻强调设计和开发这两方面目标上的统一,而这点是很多开源项目未能做到的。从构建每一个组件开始,我们始终都强调组件的外观、性能、互通性和可扩展性,而我们认为组件已经达到了这几点的要求。Ext绝对可以单独使用。实际上,除了有特定的要求,推荐单独使用Ext,这样的话文件占位更小,支持和整合也更紧密。我们也支持与jQuery、 YUI或Prototype整合使用,作为低层库的角色出现,以提供处理各种核心的服务,如DOM和事件处理,Ajax连接和动画特效。使用整合方式的一个原因是它们已具备了一些特定的器件而Ext并没有原生支持像YUI的History控件便是一个
41、典型的例子。这时,Ext需要依赖YUI这个库的底层来实现History控件,这样一来的话也可免去Ext自身底层库,从而减少了整个程序的内存占用。另一个使用整合方式的原因是,对于许多已在使用其他底层库的程序,你可能希望逐步加入Ext。总之,如果已经有了其他库,Ext可已利用它们。我们的宗旨是为用户提供各种可能性和性能上的优化。而事实是,只要实现了相对应的底层库接口,为任意一个框架添加上适配器是没有问题的人们可以轻松地将Dojo、Moo、AjaxNET,或其它JS库转变为 Ext的底层。 在项目中,Ext本身的华丽外表就很吸引眼球了,但这仅仅是其外在的美,还有最核心的内在美,即:Json。Json
42、(JavaScript Object Notation) 是一种数据交互格式,一个不能实现数据交互功能的项目是没有任何意义的,大多的Ajax框架的数据交互都基于Json,如:jQuery、ExtJs等。因此理解Json掌握Json并熟练运用是很重要的。以目前主流的开发语言为例,.NET已经把Json封装到类中,无需配置,直接与数据库交互,轻松的封装直接使用;Java就麻烦些,必须去下一个Json包,然后再做一些配置,才可以使用;PHP和Java差不多,也必须下载一个Json插件(和类相似),但是不用配置,直接封装使用。在实际的项目中,各自的取舍配置,都基于项目和需求,并不是每个项目(针对WEB
43、)都一定要用到。但是,如果想在项目中用到此类的Ajax框架,Json的掌握又是必须的。在本系统中,由于要实现各种Ajax操作以及下拉列表从数据库中读取信息等操作,所以我选用extjs来实现。2.8 MVC设计模式MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同
44、时它也可以解释用户的输入并将它们映射为模型层可执行的操作。MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。模型视图控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的
45、开发者的欢迎。视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型表示企业数据和业务规则。在MVC的三个部件中,模
46、型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。3 系统需求分析3.1 系统可行性分析 (1)技术上的可行性该系统所需硬件设备,如服务器、P
47、C机、打印机及网络配件等,这些设备在性能上已经有了很大提高,价格又相对较低,能满足系统功能需求。软件上,操作系统采用Windows 2000, Windows NT、Windows XP、等平台,采用C/S体系结构。该系统的前台使用JAVA;后台数据库使用Microsoft SQL Server2000。开发工具使用Eclipse。这些软件在MIS开发中已被大量应用,技术上都比较成熟。因此技术上是可行的。(2)经济上的可行性网络爬虫系统是互联网和用户的关系接口,为客户及时提供有用的信息。本系统属于一个实用型的系统,它可以节省工作人员大量数据收集、录入、整理、查询、修改等手工操作,而且迅速准确,
48、能够极大地提高工作效率,同时促进业务的规范化、程序化。系统开发所需的费用是比较低的,由于系统并不复杂,可以预见系统完成后可以带来较大的经济效益。(3)管理上的可行性网络爬虫系统是建立于科学管理基础之上的,只有在合理的管理体制以及完整、准确的原始数据的基础上,才能有效的开发出管理信息系统。综上所述,在技术上、经济上、管理上都是可行的,因此,基于Java网络爬虫的研究与实现是可行的。3.2 需求分析为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求,对软件需求的深入理解是软件开发工作获得成功的前提条件。所以要设计并实现一个软件系统,关键在于应该进行需求分析。需求分析是发现、求精、建摸、规格说明和复审的过程。需求分析的第一步是进一步了解用户当前所处的情况,发现用户所面临的问题和对目标系统的基本需求;接下来应该与用户深入交流,对用户的基本需求反复细化逐步求精,以得出对目标系统的完整、准确和具体的需求。3.2.1 用户需求本系统的开发设计是针对互联网用户而言的,所以它的出发点是必须满足普通用户检索的需求。检索