《基于java的浏览器的设计与实现本科学位论文.doc》由会员分享,可在线阅读,更多相关《基于java的浏览器的设计与实现本科学位论文.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于Java的浏览器的设计与实现后台功能子系统软件工程学 院: 专 业: 指导教师: 2014年9月基于Java的浏览器的设计与实现后台功能子系统摘 要当今世界是一个以计算机网络为核心的信息时代,互联网为人们快速获取、发布和传递信息提供了便捷,而浏览器作为互联网上查找信息的重要工具,给人们提供了巨大而又宝贵的信息财富,受到了大家的高度重视。网页浏览器是显示网页服务器或档案系统内的文件,并让用户与这些文件互动的一种软件。它用来显示在万维网或局域网内的文字、影像及其他资讯。浏览器作为重要的系统应用软件是不可或缺的。但目前,浏览器产品的市场被少数国外大公司垄断,众多的小型浏览器也尚处于发展期,而国内
2、的自主技术的浏览器更屈指可数,刚刚进入实用阶段。迫切需要更多的人来关注浏览器技术,开发中国自主知识产权的浏览器产品。本文围绕着浏览器的编程与开发,讲述了在JDK5.0中进行浏览器开发的一些技术和笔者的一些心得,着重讲解了笔者在毕业设计中所实现的一个浏览器程序Brower。本文用软件工程的开发过程,详细论述了浏览器的分析、设计及代码实现,最终实现一个具有能同时浏览多个网页,可查询历史浏览记录,可以实现超链接监听并响应,以及对非法网站的过滤等基本功能的浏览器。 本文以一个实际运作的浏览器 Browser 为主轴介绍浏览器的设计理念与方法,同时讲述浏览器中各个模块如何互相协同运作,来完成一个呈现网页
3、的工作。HTML词法分析是本文着重讨论的技术问题,给出了详尽的数据结构,程序流程,并且还介绍了一些基于Java的HTML解析器。另外,Java Swing技术也是本文介绍的浏览器所使用的一种主要的技术,通过使用各个组件,并增加监听器和事件处理等操作,最终形成一个具有一定事物处理能力的浏览器的界面部分。关键字:浏览器,Java Swing,HTML词法分析,事件The Design And Implementation Of A Browser Based On JavaAbstractNowadays is a computer network as the core of the infor
4、mation age. The Internet provides a convenient for people to quickly get the release and transfer information. And the Browser as a impartment tool for us to search information, provides people with a huge and valuable the wealth of information. the Homepage Browser, which becomes one of the essenti
5、al software for surf online, has already obtained widely application. Under the leading position of IE, all kinds of domestic and foreign browser software have appeared like mushroom growth breeding lives. The homepage browsers development and the application have become a computer domain big hot sp
6、ot in recent years.This article revolves Browsers programming and development, narrated some technologies and authors attainments of carrying the browser in JDK5.0 development, explained browser procedureBrower which emphatically in the achievement of graduation project.This article uses software en
7、gineerings performance procedure, elaborated Browsers analysis, design and code achievement, finally achieved the Browser which has simultaneously glances over many homepages. It can inquire the history to glance over the record, realize opens and preserves the homepage, the ultra connection monitor
8、s and responds, with to illegal website filtration and so on. This article take actual operations browserBrowser as the main axle,introduced browsers design idea and method, simultaneously narrated how each module does coordinate the operation mutually in the browser, completes one to present the ho
9、mepage the work. The HTML lexical analysis is the technical question which discusses emphatically, has given the exhaustive construction of data, the procedure flow, and also introduced some based on the Java HTML revolver. One kind of main technology which moreover, this article is also introduces
10、the Swing technology of JAVA, through uses each module, and increases operations and so on monitor and event processing, final had certain thing handling ability browsers contact surface part to form. Keywords: Browser, Java Swing, HTML Lexical Analysis, Event目 录1 前言11.1系统概述11.2 Browser浏览器的组成和各部分功能说
11、明21.2.1词法分析21.2.2语法分析21.2.3 GUI及软件界面31.2.4布局算法31.3开发的前期策划41.3.1平台的选取41.3.2确定要实现的基本功能42 系统需求分析52.1需求分析52.1.1设计目的52.1.2功能需求52.1.3其他需求52.1.4其他说明63 系统概要设计73.1功能结构图73.2开发环境73.3系统时序图83.3开发技术和开发工具简介83.3.1开发技术83.3.2开发工具简介134 系统详细设计与实现154.1子系统154.1.1子系统的划分154.1.2子系统间的协作关系154.2各子系统功能的实现164.2.1GUI的实现164.2.2控制子
12、系统的实现174.2.3网页获取子系统的实现184.2.4网页显示子系统的实现184.2.5数据管理子系统的实现184.3主要功能阐述194.3.1地址栏的实现194.3.2收藏夹的实现204.3.3工具栏的实现204.3.4阻止IE打开弹出窗口204.4编码204.4.1数据结构214.4.2处理按钮动作的方法225 测试255.1测试与调试的基本概念255.2测试内容266 结论27参 考 文 献28致 谢29第II页 共II页1 前言在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,从而倍受人们的重视,而互联网上信息的查找又要通过浏览器的浏览来实现,所以
13、本文通过对当下流行的浏览器的模拟设计和实现来让大家对网络及网络资源的认识,以及浏览器的各个功能的实现有一个大概的认识。浏览器是一个基于C/S架构的应用软件,其最基本的功能,就是能够将因特网上的众多资源,例如网页上的内容与信息或是在线服务等,呈现给使用者并让使用者得以使用存在于因特网上的各项服务。因此透过网络传输数据对浏览器来说,是相当重要且必备的一项能力。浏览器作为重要的系统应用软件是不可或缺的。但目前,浏览器产品的市场被少数国外大公司垄断,众多的小型浏览器也尚处于发展期,而国内的自主技术的浏览器更屈指可数,刚刚进入实用阶段。迫切需要更多的人来关注浏览器技术,开发中国自主知识产权的浏览器产品。
14、为了进一步了解浏览器的工作原理,本课题完成模拟浏览器的开发,实现浏览互联网上的资源以及本地资源,可查询历史浏览记录等功能的浏览器。本文阐述了浏览器开发的关键技术,并详细说明本课题Browser的实际开发过程,和技术细节。1.1系统概述蒂姆伯纳斯李(Tim Berners-Lee)是第一个使用超文本来分享资讯的人,他于1990年发明了首个网页浏览器WorldWideWeb。在1991年3月,浏览器的发展就和网络的发展联系在一起了。当时,网页浏览器被视为能够处理CERN庞大电话簿的实用工具。在与用户互动的前提下,网页浏览器根据gopher和telnet协议,允许所有用户能轻易地浏览别人所编写的网站
15、。可是,其后在浏览器中加插图像的举动,使之成为了互联网的“杀手级应用”。NCSA Mosaic使互联网得以迅速发展。它最初是一个只在Unix运行的图像浏览器;很快便发展到在Apple Macintosh和Microsoft Windows亦能运行。1993年9月发表了1.0版本。网景公司在1994年10月发布了他们的旗舰产品网景导航者。但第二年Netscape的优势就被削弱了。错失了互联网浪潮的微软在这个时候匆促的购入了Spyglass公司的技术,改成Internet Explorer。1998年,网景公司创造了Mozilla,至2002年,它已发展成一个稳定而强大的互联网套件。Mozilla
16、 1.0的出现被视为其里程碑。同年,衍生出Phoenix(后改名Firebird,最后又改为Firefox)。Firefox 1.0于2004年发表。及至2008年,Mozilla及其衍生产品约占20%网络交通量。Opera是一个灵巧的浏览器。它发布于1996年。目前它在手持电脑上十分流行。它在个人电脑网络浏览器市场上的占有率则稍微较小。2003年,微软宣布不会再推出的独立的Internet Explorer,但会变成视窗平台的一部分;同时也不会再推出任何Macintosh版本的Internet Explorer。不过,于2005年初,微软却改变了计划,并宣布将会为Windows XP、Win
17、dows Server 2003和Windows Vista操作系统推出Internet Explorer 7。2011年3月15日,微软推出了Internet Explorer9的正式版,2011年4月11日,Internet Explorer9才推出1个月,微软又推出了Internet Explorer10的首个预览版本。本系统模拟现有的浏览器,实现简单的网页浏览,包括本地网页和远程网络网页,添加收藏夹等功能,目的在于使我们了解并掌握浏览器的工作原理,充分利用已经学到的知识实现功能!1.2 Browser浏览器的组成和各部分功能说明1.2.1词法分析HTML(HyperText Marku
18、p Language,超文本标记语言)词法分析是浏览器设计的基础环节之一,也是整个设计过程中重要的前端工作,其数据结构的拟定与接下来的语法分析和布局算法密切相关,词法分析的效率与准确性、容错性也关系到整个浏览器设计的质量。Browser采用了JDK(Java Development Kit,Java开发包)附带的HTML解析器解析从服务器返回的HTML数据。1.2.2语法分析在大型的浏览器中,语法分析通常是独立的模块,但在某些小型的浏览器中,语法分析通常是与布局混合在一起的,即一边进行语法分析,一边布局,不设立相应的数据结构来存储语法分析的结果。本文所讲述的Browser也是采用这种设计思想。
19、另外,语法分析对布局的算法有直接的指导意义。1.2.3 GUI及软件界面图形用户界面(Graphical User Interface,简称 GUI)是指采用图形方式显示的计算机操作用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。浏览器无疑是一个图形界面的大需求者,选择好的GUI环境非常重要,为了能够实现专有的功能,浏览器开发者往往还要对基础的GUI库进行包装、改写,甚至写自己的控件。所有这些,是需要有专业的GUI库开发经验的专职人员来完成。GUI的功劳第一在于软件的操作界面,如窗口、菜单、工具条、滚动条等。第二在于主浏览窗体中的图形元素的输出(通常以自画控
20、件的方式)。前者通常直接使用GUI库中的已有控件,编程难度很小,后者主要利用基本的点线函数,编程难度比较大。在JavaWebBrower中使用Java Swing技术编写浏览器的图形界面,而做图形界面首先要考虑的就是选择一个合适的布局管理器。JDK没有表单设计器,需要通过代码来定制布局管理器来放置用户界面组件所在的位置。GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
21、1.2.4布局算法布局算法的好坏直接关系到界面的输出效果,但布局算法也是要根据GUI所能实现的输出效果来设计的,所以,GUI往往成为系统的关键,如果GUI提供的支持有限,即使有再好的布局算法,也是很难实现预想功能的。在Java Swing中有以下几种简单的布局管理器:(1)BorderLayout边界布局管理器BorderLayout为在容器中放置组件提供了一个稍微复杂的布局方案。BorderLayout把容器分为五个区域:东、南、西、北和中。东占据容器的右侧,南占据容器的下侧,以此类推。(2)FlowLayout流式布局管理器FlowLayout是最简单的布局管理器,按照组件的添加次序将它们
22、从左到右地放置在容器中。当到达容器边界时,组件将放置在下一行中。(3)GridLayout网格布局管理器GridLayout将容器分割成许多列和行,组件被填充到每个网格中。添加到容器中的组件首先放置在左上角的网格中,然后从左到右放置其他组件,直至占满该行的所有网格,接着继续在下一行中从左到右放置组件。(4)CardLayout卡片式布局管理器CardLayout将界面看作一系列的卡片,在任何时候只有其中一张卡片是可见的,这张卡片占据容器的整个区域。当某个容器被创建后,就会有一个默认的布局管理器。Window、Frame和Dialog的默认布局管理器是BorderLayout,Panel和App
23、let的默认布局管理器是FlowLayout。可以调用容器的setLayout()方法来设置容器的布局管理器。1.3开发的前期策划1.3.1平台的选取Microsoft开发的Windows是目前世界上用户最多,且兼容性最强的操作系统。最早的Windows操作系统从1985年就推出了,当时推出的操作系统windows1.0是基于DOS内核的操作系统。windows1.0改进了微软以往的命令、代码系统Microsoft Disk Operating Systerm(简称MS-DOS)。Microsoft Windows是彩色界面的操作系统,支持键鼠功能。Windows操作系统已被广大用户接受,并且
24、在Windows平台上的开发业较为简便,所以本课题选用Windows操作平台。1.3.2确定要实现的基本功能(1)界面:设计对包括窗口、菜单、输入框、工具条、滚动条等的支持的界面(2)实现简单网页的布局、对简单网页的查看;(3)具有超链接功能;(4)支持对非法网站的过滤;(5)支持中文汉字;(6)支持JSP、HTML:能够解析JSP文件和HTML文件;(7)支持JavaScript脚本;(8)支持表单;(9)收藏夹功能;2 系统需求分析2.1需求分析2.1.1设计目的以需求分析说明书为依据,参照开发环境和使用环境的特点,划分出子系统,并确定出类。描述子系统间的协作关系,以及类间的协作关系。2.
25、1.2功能需求本项目要实现的功能模块包括:菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡模块以及收藏夹模块。1.菜单栏模块内容包括文件菜单,转到菜单,调整菜单和收藏夹菜单。主要是通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,还包括收藏夹的新建与整理。2.工具栏的功能则是实现常用的操作,通过点击工具图标来实现菜单栏中所有的操作。3.地址栏模块则用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。4.浏览器选项卡模块实现在同一个窗体中显示多个页面。5.收藏夹模块是本设计中最重要的一部分,包括整理收藏夹菜单和添加收藏夹菜单,可在程序运行的过程中根据用户保存的内容,
26、填充收藏夹的内容,且在网页浏览器重新启动的情况下依旧保留有上次保存的网页。2.1.3其他需求(1)要求前进和后退可进行多步。(2)要求网页显示时内容要快一点显示,不能让用户等待长时间而窗口无任何显示。(3)要求能实现对非法网站的过滤。(4)要求支持JavaScript2.1.4其他说明(1)因开发时间的限制,对需求的优先级进行说明如下:1)浏览功能为第一优先级,必须完成,即2.1.2功能需求必须完成。2)其他需求中的功能为第二优先级,尽量完成。(2)统一资源定位符URL1)URL = http:/ + Host字段 + / + ScriptName字段 + / + PathInfo2)字段 +
27、 Query字段2)Host字段标识Web服务器和Web服务器应用程序的主机名3)ScriptName字段指定Web服务器应用程序4)PathInfo字段指出报文在Web服务器应用程序内的目标5)Query字段部分包含一组命名的数据。3 系统概要设计3.1功能结构图网页浏览器网页浏览器收藏夹主页前进后退停止刷新转到添加收藏夹添加收藏夹创建文件夹选择收藏夹添加收藏夹新建文件夹重命名移动到删除图 3.1 功能结构图3.2开发环境(1)使用环境Windows操作系统。此操作系统界面友好,使用简便,且有较成熟的消息传递机制可供利用。(2)开发环境MyEclipse + TomCat 6.0.26。My
28、Eclipse编译器提供了大量的插件,可以方便的进行开发。TomCat用来提供访问本地文件的虚拟路径3.3系统时序图时序图如图3.2所示,在用户向浏览器发送请求后,浏览器会向由URL所指定的Web服务器请求一次或多次网页信息,Web服务器返回的HTML页面交给浏览器,由浏览器显示给用户,完成了用户上网的动作。用户要求浏览网络网页请求网页信息浏览器Web服务器返回网页信息显示网页图3.2 浏览器的时序图3.3开发技术和开发工具简介3.3.1开发技术 (1)面向对象软件工程概述软件工程是一门研究如何用系统化、规范化、产业化等工程原则和方法实施软件开发和维护的学科。1968年秋季,NATO的科技委员
29、会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在此次会议上第一次提出了软件工程(Software Engineering)这个概念。到今天,软件工程整整走过了46年的历程。软件研究人员不断探索新的软件开发方法,至今已形成八类软件开发方法,例如最早的Parnas方法。但这一方法不能独立使用,只能作为其他方法的补充。软件开发的面向对象方法于20世纪60年代后期提出,到20世纪90年代前半期,面向对象软件工程已成为开发人员的首选范型。面向对象方法是一种自底向上和自顶向下相结合的方法,它以对象建模为基础,不仅考虑了输入、输出数据结构,实际上也包含了对所有对
30、象的数据结构。OO技术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破。面向对象的特点有:(1) 自底向上的归纳(2) 自顶向下的分解(3) 基础是对象模型(4) 需求分析彻底(5) 可维护性大大改善(6) 封装、继承、多态、抽象(2)Java Swing概述在java 1.0刚刚出现的时候,包含了一个用于基本GUI程序设计的类库,Sun将它成为抽象窗口工具箱(Abstract Window Toolkit,AWT)。基本AWT库采用将处理用户界面元素的任务委派给每个目标平台(Windows、Solaris等等)的本地GUI工具箱的方式,由本地GUI工具箱负责用
31、户界面的元素的创建和动作。例如,如果使用最初的AWT在Java窗口中放置一个文本框,就会有一个底层的“对等体”文本框,用它来实际地处理文本输入。从理论上说,结果程序可以运行在任何平台上,但观感(look and feel)的效果却依赖于目标平台。对于简单的应用程序来说,基于对等体方法的效果还是不错的,但是,要想编写依赖于本地用户界面元素的高质量、可移植的图形库就会显现出缺陷了。例如,菜单、滚动条和文本域这些用户界面元素,在不同的平台上,操作行为存在着一些微妙的差别。因此,要想给予用户一致的、可预见性的界面操作方式是相当困难的。而且,有些图形环境并没有像Windows或Macintosh这样丰富
32、的用户界面组件集合。这也就将基于对等体的可移植库限制在了一定的范围内。其结果是使AWT构建的GUI应用程序看起来没有Windows或其他应用程序显示的那么漂亮,也没有提供那些平台用户所认知的功能。更加糟糕的是,在不同平台上的AWT用户界面库中存在着不同的Bug。1996年,Netscape创建了一种称为IFC(Internet Foundation Class)的GUI库,它采用了AWT完全不同的工作方式。它将按钮、菜单这样的用户界面元素绘制到空白窗口上,而对等体只需要创建和绘制窗口。因此,Netscape的IFC部件在程序运行的所有平台上的外观和动作都一样。Sun和Netscape合作完善了
33、这种方式,创建了一个名为Swing的用户界面库。Swing可作为Java 1.1的扩展部分使用,现已成为JDK 1.2标准库的一部分。 现在,Swing是不对等基于GUI工具箱的正式名字。它已是Java基础类库(Java Foundation Class,JFC)的一部分。完整的JFC十分庞大,其中包含的内容远远大于Swing GUI工具箱。JFC特性不仅仅包含了Swing组件,而且还包含了一个可访问的API、一个2D API和一个可拖拽的API。当然,在用户屏幕上显示基于Swing用户界面的元素要比显示AWT的基于对等体组件的速度慢一些。但对于任何一台现代的计算机来说,微小的速度差别无妨大碍
34、。另外,由于下列几点无法抗拒的原因,驱使人们选择Swing:1)Swing拥有一个丰富、便捷的用户界面元素集合。2)Swing对底层平台依赖的很少,因此与平台相关的bug很少。3)Swing给予不同平台的用户一致的感官效果。(3) 关于JDIC的说明JDesktop Integration Components (JDIC),是一个开源的项目,目的是构建消除本机应用程序和 Java等价物之间差距的组件。该项目是为了使用java建立桌面应用程序而建立的。JDIC 单一的 Java API 允许应用程序接进本机操作系统特性,同时保持跨平台支持。它目前提供了本机 Web浏览器(Internet Ex
35、plorer 或 Mozilla) 支持、系统托盘支持、文件扩展集成、应用程序启动与打印和其他桌面特性。JDIC分为五个部分和一个孵化中的项目:1) 桌面:为了打开、编辑和用email邮寄文件来打开桌面程序;2) 文件类型:设置桌面文件类型关联; 3) 浏览器:在AWT画布上嵌入本地浏览器(Internet Explorer或者Mozilla);4) 包装器:把Java Web Start程序转换成本地安装程序的命令行工具;5) 托盘API:支持系统托盘图标和弹出式菜单;6) lSaverBeans:Java中的系统屏幕保护;本项目使用JDIC实现浏览器组件,浏览器组件API可以实现访问几个浏
36、览器事件以及在历史记录上的控制(向前,后退,刷新)。以下面的例子说明在本项目中如何使用浏览器组件:import org.jdesktop.jdic.browser.*;import .*;import javax.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);fra
37、me.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(browser);frame.pack();frame.setSize(500,500);frame.setVisible(true);正如上面代码所演示的那样,WebBrowser对象仅仅是一个可以把它放入一个标准的Jframe中的AWT组件。Main方法的第一行创建了一个新的WebBrowser,第二行设置了想要显示的URL。其他的代码创建了一个frame,把浏览器加入其中,并使得frame可见,WebBrowser是个本地AWT组件,因
38、此在与Swing结合的时候会有冲突。混合它们的两个规则是 1)不要让Swing和AWT组件重叠和 2)在菜单上调用setLightWeightPopupEnabled(false)否则它们将消失在浏览器组件后边。(4) HTML概述超文本标记语言(HyperText Markup Language,HTML)是一种用于文档布局和超文本链接规范的语言。它定义了特殊的、嵌入式指令的语法和放置方法,浏览器中不会显示这些指令,但是HTML可以告诉浏览器该如何显示文档的内容,如文本、图像及其他支持的媒体等,还有如何通过特殊的超文本链接来制作交互式的文档,这些链接可以把这些文档和其他因特网资源链接起来。H
39、TML词法分析是浏览器设计的基础环节之一,也是整个设计过程中重要的前端工作,其数据结构的拟定与接下来的语法分析和布局算法密切相关,词法分析的效率与准确性、容错性也关系到整个浏览器设计的质量。(5)HTML词法分析器Bit Token的组成及其功能Bit Token是Netbit Browser的HTML词法分析器,使用标准C编程,Netbit Browser是基于Linux/Gtk的浏览器,也是一个开放源码项目。Bit Token作为Netbit Browser的词法分析部份,负责对接收的HTML代码进行词法分析,主要的目的是提取网页中元素的名称及其属性,并以恰当的形式(即按一定的数据结构)加
40、以保存,也就是完成了将数据流离散化、结构化的过程。Bit Token主要由以下几个部分组成:1)初始化:完成对数据结构的初始化,主要是分配内存,变量赋初值。2)主体的数据流分析:逐字符的进行判断,确定数据的归属类型。3)元素的分析:提取元素的名称、属性和值域。4)释放:主要是对内存的释放。在对HTML脚本语法分析结束后,要对页面进行布局。在整个浏览器中,Layout属于关键技术之一。 (6)几种基于JAVA的HTML Parser1)HTML ParserHTML Parser实现即时HTML语法分析程序,提供了一组Tag对象,这些对象可以深入解析一棵可搜索的结构树。2)Jericho HTM
41、L ParserJericho HTML Parser是一个简单而功能强大的Java HTML解析器库,可以分析和处理HTML文档的一部分,包括一些通用的服务器端标签,同时也可以重新生成无法识别的或无效的HTML。它也提供了一个有用的HTML表单分析器。3)NekoHTMLNekoHTML是一个简单的HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的错误。NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,以及不匹配的内嵌
42、元素标签。NekoHTML的开发使用了 Xerces Native Interface (XNI),后者是Xerces2的实现基础。4)HtmlCleanerHtmlCleaner是一个开源的Html文档解析器。HtmlCleaner能够重新排序每个元素然后生成结构良好(Well-Formed)的 XML文档。默认情况下它遵循的规则是类似于大部份web浏览器为创建文档对象模型所使用的规则。然而,用户可以提供自定义tag和规则组来进行过滤和匹配。3.3.2开发工具简介MyEclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件和组
43、件构建开发环境。幸运的是,MyEclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。虽然大多数用户很乐于将 MyEclipse 当作 Java IDE 来使用,但 MyEclipse 的目标不仅限于此。MyEclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 MyEclipse 的软件开发人员,因为它允许他们构建与 MyEclipse 环境无缝集成的工具。由于 MyEclipse 中的每样东西都是插件,对于给 MyEclipse 提供插件,以及给
44、用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 MyEclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。MyEclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 MyEclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere St
45、udio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。MyEclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。MyEclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。 MyEclipse的插件机制是轻型软件组件化架构。在富客户机平台上,MyEclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。 已有的分离的插件已经能
46、够支持C/C+(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到 现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。4 系统详细设计与实现浏览器的窗体是程序的主界面,它包括浏览指定的网站,收藏网站信息等业务。主要由菜单栏,工具栏,地址栏,浏览器选项卡和状态栏组成。4.1子系统4.1.1子系统的划分依据需求分析说明书和环境特点,将本系统划分为5个子系统:1)用户界面子系统:用于输入控制2)控制子系统:系统控制,以及消息传递3)网页显示子系统:显示网页4)网页获取子系统:从远端Web服务器获取文件,以及文件信息5)数据管理子系统:包括将收藏夹的内容保存到数据文件4.1.2子系统间的协作关系子系统间的协作关系为:用户在浏览器界面进行操作,控制子系统会根据用户做出的动作去执行相应的功能,例如,用户在地址栏输入URL地址点击“转到”按钮或直接按回车,控制子系统检测到了用户的行为,调用网页显示子系统,网页显示子系统完成把从服务器获取的HTML流解析并显示给用户,见图4.1。网页获取子系统GUI子系统控制子系统网页显示子系统数据管理子系统请求显示网页请求网页读写文件信息获取远程网