基于java的浏览器的设计与实现本科学位论文.docx
- 文档编号:24784875
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:29
- 大小:674.47KB
基于java的浏览器的设计与实现本科学位论文.docx
《基于java的浏览器的设计与实现本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于java的浏览器的设计与实现本科学位论文.docx(29页珍藏版)》请在冰豆网上搜索。
基于java的浏览器的设计与实现本科学位论文
基于Java的浏览器的设计与实现
—后台功能子系统
软件工程
学院:
专业:
指导教师:
2014年9月
基于Java的浏览器的设计与实现后台功能子系统
摘要
当今世界是一个以计算机网络为核心的信息时代,互联网为人们快速获取、发布和传递信息提供了便捷,而浏览器作为互联网上查找信息的重要工具,给人们提供了巨大而又宝贵的信息财富,受到了大家的高度重视。
网页浏览器是显示网页服务器或档案系统内的文件,并让用户与这些文件互动的一种软件。
它用来显示在万维网或局域网内的文字、影像及其他资讯。
浏览器作为重要的系统应用软件是不可或缺的。
但目前,浏览器产品的市场被少数国外大公司垄断,众多的小型浏览器也尚处于发展期,而国内的自主技术的浏览器更屈指可数,刚刚进入实用阶段。
迫切需要更多的人来关注浏览器技术,开发中国自主知识产权的浏览器产品。
本文围绕着浏览器的编程与开发,讲述了在JDK5.0中进行浏览器开发的一些技术和笔者的一些心得,着重讲解了笔者在毕业设计中所实现的一个浏览器程序—Brower。
本文用软件工程的开发过程,详细论述了浏览器的分析、设计及代码实现,最终实现一个具有能同时浏览多个网页,可查询历史浏览记录,可以实现超链接监听并响应,以及对非法网站的过滤等基本功能的浏览器。
本文以一个实际运作的浏览器Browser为主轴介绍浏览器的设计理念与方法,同时讲述浏览器中各个模块如何互相协同运作,来完成一个呈现网页的工作。
HTML词法分析是本文着重讨论的技术问题,给出了详尽的数据结构,程序流程,并且还介绍了一些基于Java的HTML解析器。
另外,JavaSwing技术也是本文介绍的浏览器所使用的一种主要的技术,通过使用各个组件,并增加监听器和事件处理等操作,最终形成一个具有一定事物处理能力的浏览器的界面部分。
关键字:
浏览器,JavaSwing,HTML词法分析,事件
TheDesignAndImplementationOfABrowserBasedOnJava
Abstract
Nowadaysisacomputernetworkasthecoreoftheinformationage.TheInternetprovidesaconvenientforpeopletoquicklygetthereleaseandtransferinformation.AndtheBrowserasaimpartmenttoolforustosearchinformation,providespeoplewithahugeandvaluablethewealthofinformation.theHomepageBrowser,whichbecomesoneoftheessentialsoftwareforsurfonline,hasalreadyobtainedwidelyapplication.UndertheleadingpositionofIE,allkindsofdomesticandforeignbrowsersoftwarehaveappearedlikemushroomgrowthbreedinglives.Thehomepagebrowser'sdevelopmentandtheapplicationhavebecomeacomputerdomainbighotspotinrecentyears.
ThisarticlerevolvesBrowser'sprogramminganddevelopment,narratedsometechnologiesandauthor'sattainmentsofcarryingthebrowserinJDK5.0development,explainedbrowserprocedure—Browerwhichemphaticallyintheachievementofgraduationproject.
Thisarticleusessoftwareengineering'sperformanceprocedure,elaboratedBrowser'sanalysis,designandcodeachievement,finallyachievedtheBrowserwhichhassimultaneouslyglancesovermanyhomepages.Itcaninquirethehistorytoglanceovertherecord,realizeopensandpreservesthehomepage,theultraconnectionmonitorsandresponds,withtoillegalwebsitefiltrationandsoon.Thisarticletakeactualoperation'sbrowser—Browserasthemainaxle,introducedbrowser'sdesignideaandmethod,simultaneouslynarratedhoweachmoduledoescoordinatetheoperationmutuallyinthebrowser,completesonetopresentthehomepagethework.TheHTMLlexicalanalysisisthetechnicalquestionwhichdiscussesemphatically,hasgiventheexhaustiveconstructionofdata,theprocedureflow,andalsointroducedsomebasedontheJavaHTMLrevolver.Onekindofmaintechnologywhichmoreover,thisarticleisalsointroducestheSwingtechnologyofJAVA,throughuseseachmodule,andincreasesoperationsandsoonmonitorandeventprocessing,finalhadcertainthinghandlingabilitybrowser'scontactsurfaceparttoform.
Keywords:
Browser,JavaSwing,HTMLLexicalAnalysis,Event
1前言
在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,从而倍受人们的重视,而互联网上信息的查找又要通过浏览器的浏览来实现,所以本文通过对当下流行的浏览器的模拟设计和实现来让大家对网络及网络资源的认识,以及浏览器的各个功能的实现有一个大概的认识。
浏览器是一个基于C/S架构的应用软件,其最基本的功能,就是能够将因特网上的众多资源,例如网页上的内容与信息或是在线服务等,呈现给使用者并让使用者得以使用存在于因特网上的各项服务。
因此透过网络传输数据对浏览器来说,是相当重要且必备的一项能力。
浏览器作为重要的系统应用软件是不可或缺的。
但目前,浏览器产品的市场被少数国外大公司垄断,众多的小型浏览器也尚处于发展期,而国内的自主技术的浏览器更屈指可数,刚刚进入实用阶段。
迫切需要更多的人来关注浏览器技术,开发中国自主知识产权的浏览器产品。
为了进一步了解浏览器的工作原理,本课题完成模拟浏览器的开发,实现浏览互联网上的资源以及本地资源,可查询历史浏览记录等功能的浏览器。
本文阐述了浏览器开发的关键技术,并详细说明本课题Browser的实际开发过程,和技术细节。
1.1系统概述
蒂姆·伯纳斯·李(TimBerners-Lee)是第一个使用超文本来分享资讯的人,他于1990年发明了首个网页浏览器WorldWideWeb。
在1991年3月,浏览器的发展就和网络的发展联系在一起了。
当时,网页浏览器被视为能够处理CERN庞大电话簿的实用工具。
在与用户互动的前提下,网页浏览器根据gopher和telnet协议,允许所有用户能轻易地浏览别人所编写的网站。
可是,其后在浏览器中加插图像的举动,使之成为了互联网的“杀手级应用”。
NCSAMosaic使互联网得以迅速发展。
它最初是一个只在Unix运行的图像浏览器;很快便发展到在AppleMacintosh和MicrosoftWindows亦能运行。
1993年9月发表了1.0版本。
网景公司在1994年10月发布了他们的旗舰产品网景导航者。
但第二年Netscape的优势就被削弱了。
错失了互联网浪潮的微软在这个时候匆促的购入了Spyglass公司的技术,改成InternetExplorer。
1998年,网景公司创造了Mozilla,至2002年,它已发展成一个稳定而强大的互联网套件。
Mozilla1.0的出现被视为其里程碑。
同年,衍生出Phoenix(后改名Firebird,最后又改为Firefox)。
Firefox1.0于2004年发表。
及至2008年,Mozilla及其衍生产品约占20%网络交通量。
Opera是一个灵巧的浏览器。
它发布于1996年。
目前它在手持电脑上十分流行。
它在个人电脑网络浏览器市场上的占有率则稍微较小。
2003年,微软宣布不会再推出的独立的InternetExplorer,但会变成视窗平台的一部分;同时也不会再推出任何Macintosh版本的InternetExplorer。
不过,于2005年初,微软却改变了计划,并宣布将会为WindowsXP、WindowsServer2003和WindowsVista操作系统推出InternetExplorer7。
2011年3月15日,微软推出了InternetExplorer9的正式版,2011年4月11日,InternetExplorer9才推出1个月,微软又推出了InternetExplorer10的首个预览版本。
本系统模拟现有的浏览器,实现简单的网页浏览,包括本地网页和远程网络网页,添加收藏夹等功能,目的在于使我们了解并掌握浏览器的工作原理,充分利用已经学到的知识实现功能!
1.2Browser浏览器的组成和各部分功能说明
1.2.1词法分析
HTML(HyperTextMarkupLanguage,超文本标记语言)词法分析是浏览器设计的基础环节之一,也是整个设计过程中重要的前端工作,其数据结构的拟定与接下来的语法分析和布局算法密切相关,词法分析的效率与准确性、容错性也关系到整个浏览器设计的质量。
Browser采用了JDK(JavaDevelopmentKit,Java开发包)附带的HTML解析器解析从服务器返回的HTML数据。
1.2.2语法分析
在大型的浏览器中,语法分析通常是独立的模块,但在某些小型的浏览器中,语法分析通常是与布局混合在一起的,即一边进行语法分析,一边布局,不设立相应的数据结构来存储语法分析的结果。
本文所讲述的Browser也是采用这种设计思想。
另外,语法分析对布局的算法有直接的指导意义。
1.2.3GUI及软件界面
图形用户界面(GraphicalUserInterface,简称GUI)是指采用图形方式显示的计算机操作用户接口。
与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
浏览器无疑是一个图形界面的大需求者,选择好的GUI环境非常重要,为了能够实现专有的功能,浏览器开发者往往还要对基础的GUI库进行包装、改写,甚至写自己的控件。
所有这些,是需要有专业的GUI库开发经验的专职人员来完成。
GUI的功劳第一在于软件的操作界面,如窗口、菜单、工具条、滚动条等。
第二在于主浏览窗体中的图形元素的输出(通常以自画控件的方式)。
前者通常直接使用GUI库中的已有控件,编程难度很小,后者主要利用基本的点线函数,编程难度比较大。
在JavaWebBrower中使用JavaSwing技术编写浏览器的图形界面,而做图形界面首先要考虑的就是选择一个合适的布局管理器。
JDK没有表单设计器,需要通过代码来定制布局管理器来放置用户界面组件所在的位置。
GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。
人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。
而嵌入式GUI具有下面几个方面的基本要求:
轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
1.2.4布局算法
布局算法的好坏直接关系到界面的输出效果,但布局算法也是要根据GUI所能实现的输出效果来设计的,所以,GUI往往成为系统的关键,如果GUI提供的支持有限,即使有再好的布局算法,也是很难实现预想功能的。
在JavaSwing中有以下几种简单的布局管理器:
(1)BorderLayout边界布局管理器
BorderLayout为在容器中放置组件提供了一个稍微复杂的布局方案。
BorderLayout把容器分为五个区域:
东、南、西、北和中。
东占据容器的右侧,南占据容器的下侧,以此类推。
(2)FlowLayout流式布局管理器
FlowLayout是最简单的布局管理器,按照组件的添加次序将它们从左到右地放置在容器中。
当到达容器边界时,组件将放置在下一行中。
(3)GridLayout网格布局管理器
GridLayout将容器分割成许多列和行,组件被填充到每个网格中。
添加到容器中的组件首先放置在左上角的网格中,然后从左到右放置其他组件,直至占满该行的所有网格,接着继续在下一行中从左到右放置组件。
(4)CardLayout卡片式布局管理器
CardLayout将界面看作一系列的卡片,在任何时候只有其中一张卡片是可见的,这张卡片占据容器的整个区域。
当某个容器被创建后,就会有一个默认的布局管理器。
Window、Frame和Dialog的默认布局管理器是BorderLayout,Panel和Applet的默认布局管理器是FlowLayout。
可以调用容器的setLayout()方法来设置容器的布局管理器。
1.3开发的前期策划
1.3.1平台的选取
Microsoft开发的Windows是目前世界上用户最多,且兼容性最强的操作系统。
最早的Windows操作系统从1985年就推出了,当时推出的操作系统windows1.0是基于DOS内核的操作系统。
windows1.0改进了微软以往的命令、代码系统MicrosoftDiskOperatingSysterm(简称MS-DOS)。
MicrosoftWindows是彩色界面的操作系统,支持键鼠功能。
Windows操作系统已被广大用户接受,并且在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.1.2功能需求
本项目要实现的功能模块包括:
菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡模块以及收藏夹模块。
1.菜单栏模块内容包括文件菜单,转到菜单,调整菜单和收藏夹菜单。
主要是通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,还包括收藏夹的新建与整理。
2.工具栏的功能则是实现常用的操作,通过点击工具图标来实现菜单栏中所有的操作。
3.地址栏模块则用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。
4.浏览器选项卡模块实现在同一个窗体中显示多个页面。
5.收藏夹模块是本设计中最重要的一部分,包括整理收藏夹菜单和添加收藏夹菜单,可在程序运行的过程中根据用户保存的内容,填充收藏夹的内容,且在网页浏览器重新启动的情况下依旧保留有上次保存的网页。
2.1.3其他需求
(1)要求前进和后退可进行多步。
(2)要求网页显示时内容要快一点显示,不能让用户等待长时间而窗口无任何显示。
(3)要求能实现对非法网站的过滤。
(4)要求支持JavaScript
2.1.4其他说明
(1)因开发时间的限制,对需求的优先级进行说明如下:
1)浏览功能为第一优先级,必须完成,即2.1.2功能需求必须完成。
2)其他需求中的功能为第二优先级,尽量完成。
(2)统一资源定位符URL
1)URL=http:
//+Host字段+/+ScriptName字段+/+PathInfo2)字段+Query字段
2)Host字段标识Web服务器和Web服务器应用程序的主机名
3)ScriptName字段指定Web服务器应用程序
4)PathInfo字段指出报文在Web服务器应用程序内的目标
5)Query字段部分包含一组命名的数据。
3系统概要设计
3.1功能结构图
图3.1功能结构图
3.2开发环境
(1)使用环境
Windows操作系统。
此操作系统界面友好,使用简便,且有较成熟的消息传递机制可供利用。
(2)开发环境
MyEclipse+TomCat6.0.26。
MyEclipse编译器提供了大量的插件,可以方便的进行开发。
TomCat用来提供访问本地文件的虚拟路径
3.3系统时序图
时序图如图3.2所示,在用户向浏览器发送请求后,浏览器会向由URL所指定的Web服务器请求一次或多次网页信息,Web服务器返回的HTML页面交给浏览器,由浏览器显示给用户,完成了用户上网的动作。
图3.2浏览器的时序图
3.3开发技术和开发工具简介
3.3.1开发技术
(1)面向对象软件工程概述
软件工程是一门研究如何用系统化、规范化、产业化等工程原则和方法实施软件开发和维护的学科。
1968年秋季,NATO的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。
在此次会议上第一次提出了软件工程(SoftwareEngineering)这个概念。
到今天,软件工程整整走过了46年的历程。
软件研究人员不断探索新的软件开发方法,至今已形成八类软件开发方法,例如最早的Parnas方法。
但这一方法不能独立使用,只能作为其他方法的补充。
软件开发的面向对象方法于20世纪60年代后期提出,到20世纪90年代前半期,面向对象软件工程已成为开发人员的首选范型。
面向对象方法是一种自底向上和自顶向下相结合的方法,它以对象建模为基础,不仅考虑了输入、输出数据结构,实际上也包含了对所有对象的数据结构。
OO技术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破。
面向对象的特点有:
(1)自底向上的归纳
(2)自顶向下的分解
(3)基础是对象模型
(4)需求分析彻底
(5)可维护性大大改善
(6)封装、继承、多态、抽象
(2)JavaSwing概述
在java1.0刚刚出现的时候,包含了一个用于基本GUI程序设计的类库,Sun将它成为抽象窗口工具箱(AbstractWindowToolkit,AWT)。
基本AWT库采用将处理用户界面元素的任务委派给每个目标平台(Windows、Solaris等等)的本地GUI工具箱的方式,由本地GUI工具箱负责用户界面的元素的创建和动作。
例如,如果使用最初的AWT在Java窗口中放置一个文本框,就会有一个底层的“对等体”文本框,用它来实际地处理文本输入。
从理论上说,结果程序可以运行在任何平台上,但观感(lookandfeel)的效果却依赖于目标平台。
对于简单的应用程序来说,基于对等体方法的效果还是不错的,但是,要想编写依赖于本地用户界面元素的高质量、可移植的图形库就会显现出缺陷了。
例如,菜单、滚动条和文本域这些用户界面元素,在不同的平台上,操作行为存在着一些微妙的差别。
因此,要想给予用户一致的、可预见性的界面操作方式是相当困难的。
而且,有些图形环境并没有像Windows或Macintosh这样丰富的用户界面组件集合。
这也就将基于对等体的可移植库限制在了一定的范围内。
其结果是使AWT构建的GUI应用程序看起来没有Windows或其他应用程序显示的那么漂亮,也没有提供那些平台用户所认知的功能。
更加糟糕的是,在不同平台上的AWT用户界面库中存在着不同的Bug。
1996年,Netscape创建了一种称为IFC(InternetFoundationClass)的GUI库,它采用了AWT完全不同的工作方式。
它将按钮、菜单这样的用户界面元素绘制到空白窗口上,而对等体只需要创建和绘制窗口。
因此,Netscape的IFC部件在程序运行的所有平台上的外观和动作都一样。
Sun和Netscape合作完善了这种方式,创建了一个名为Swing的用户界面库。
Swing可作为Java1.1的扩展部分使用,现已成为JDK1.2标准库的一部分。
现在,Swing是不对等基于GUI工具箱的正式名字。
它已是Java基础类库(JavaFoundationClass,JFC)的一部分。
完整的JFC十分庞大,其中包含的内容远远大于SwingGUI工具箱。
JFC特性不仅仅包含了Swing组件,而且还包含了一个可访问的API、一个2DAPI和一个可拖拽的API。
当然,在用户屏幕上显示基于Swing用户界面的元素要比显示AWT的基于对等体组件的速度慢一些。
但对于任何一台现代的计算机来说,微小的速度差别无妨大碍。
另外,由于下列几点无法抗拒的原因,驱使人们选择Swing:
1)Swing拥有一个丰富、便捷的用户界面元素集合。
2)Swing对底层平台依赖的很少,因此与平台相关的bug很少。
3)Swing给予不同平台的用户一致的感官效果。
(3)关于JDIC的说明
JDesktopIntegrationComponents(JDIC),是一个开源的项目,目的是构建消除本机应用程序和Java 等价物之间差距的组件。
该项目是为了使用java建立桌面应用程序而建立的。
JDIC单一的JavaAPI允许应用程序接进本机操作系统特性,同时保持跨平台支持。
它目前提供了本机Web 浏览器(InternetExplorer或Mozilla)支持、系统托盘支持、文件扩展集成、应用程序启动与打印和其他桌面特性。
JDIC分为五个部分和一个孵化中的项目:
1)桌面:
为了打开、编辑和用email邮寄文件来打开桌面程序;
2)文件类型:
设置桌面文件类型关联;
3)浏览器:
在AWT画布
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 java 浏览器 设计 实现 本科 学位 论文