基于java的浏览器的设计与实现_第1页
基于java的浏览器的设计与实现_第2页
基于java的浏览器的设计与实现_第3页
基于java的浏览器的设计与实现_第4页
基于java的浏览器的设计与实现_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于java的浏览器的设计与实现——GUI界面子系统摘要21世纪人们对互联网的依赖越来越大,而网页浏览器作为上网浏览信息所必需的软件之一,已经得到了广泛地应用。在IE占据了大部分浏览器市场的情况下,国内外开发商依然没有放弃这个巨大的市场,各式各样的浏览器被开发出来抢占市场。网页浏览器的开发与应用已成为了计算机领域近年来的一大热点。本文用软件工程的开发过程,详细论述了浏览器的分析、设计及代码实现,最终实现一个具有能同时浏览多个网页,可查看收藏夹,可以实现打开网页,超链接监听并响应,前进和后退等基本功能的浏览器。本文以一个实际运作的浏览器Browser为主轴介绍浏览器的设计理念与方法,同时讲述浏览器中各个模块如何互相协同运作,来完成一个呈现网页的工作。通过下载JDIC类库,实现了浏览器选项卡,从而达成了一个窗口显示多个网页的目的。收藏夹的实现是将收藏夹集合序列化到数据文件中,这样收藏夹被持久化解决了收藏夹的问题。另外,JavaSwing技术也是本文介绍的浏览器所使用的一种主要的技术,通过使用各个组件,并增加监听器和事件处理等操作,最终形成一个具有一定事物处理能力的浏览器的界面部分。关键词:浏览器,JDIC类库,JavaSwing,事件BasedonthedesignandimplementationofaJavabrowserAbstractInthe21stcentury,peoplerelyontheInternetismoreandmorebig,thewebbrowserasoneofthenecessarysoftware,surfingtheInternetinformationhasbeenwidelyused.InthecaseofoccupyingmostoftheIEbrowsermarket,developersstilldidn'tgiveupthehugemarketathomeandabroad,developedavarietyofbrowserispreemptedmarket.Thedevelopmentandapplicationofwebbrowserhasbecomeafocusinthecomputerfieldinrecentyears.Inthedevelopmentprocessofsoftwareengineering,thispaperdetaileddiscussestheanalysis,designandcodeimplementationofthebrowser,andultimatelyachieveahavetobrowsemultiplewebpagesatthesametime,toviewthefavorites,canrealizeopenawebpage,hyperlinkstomonitorandrespondto,thebasicfunctionsuchasforwardandbackwardinthebrowser.BasedonanactualoperationoftheBrowserBrowserBrowserdesignconceptandmethodofintroductionformainshaft,variousmodulestellstheBrowserhowtoworktogetherwitheachotheratthesametime,tofinishtheworkofarenderedpage.BydownloadingtheJDICclasslibrary,therealizationofthebrowserTAB,whichreachedthepurposeofawindowtodisplaymultiplewebpages.Therealizationofthefavoritesarefavoritescollectionserializedintoadatafile,thiscollectiondoublecoverletpersistentsolvedtheproblemofthefavorites.Inaddition,theJavaSwingtechnologyisalsointroducedinthispaperbythebrowserusingakindofmaintechnology,throughtheuseoftheindividualcomponents,andaddinglistenersandeventhandlingoperationssuchas,eventuallyformingacertainthingsbrowserinterfacepartofprocessingcapacity.Keywords:Thebrowser,TheJDICclasslibrary,JavaSwing,Theevent第第Ⅰ页共Ⅱ页目录TOC\o"1-1"\t"标题2,1,标题3,1"\h\u165561引言 页共26页1引言1.1研究课题的目的和意义当前,信息化浪潮正在全球范围内兴起,一个以计算机网络为核心的信息时代正向我们走来。在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,从而倍受人们的重视,而互联网上信息的查找又要通过浏览器的浏览来实现,所以本文通过对当下流行的浏览器的模拟设计和实现来让大家对网络及网络资源的认识,以及浏览器的各个功能的实现有一个大概的认识[1]。浏览器是一个基于C/S架构的应用软件,其最基本的功能,就是能够将因特网上的众多资源,例如网页上的内容与信息或是在线服务等,呈现给使用者并让使用者得以使用存在于因特网上的各项服务。因此透过网络传输数据对浏览器来说,是相当重要且必备的一项能力。浏览器作为重要的系统应用软件是不可或缺的。但目前,浏览器产品的市场被少数国外大公司垄断,众多的小型浏览器也尚处于发展期,而国内的自主技术的浏览器更屈指可数,刚刚进入实用阶段。迫切需要更多的人来关注浏览器技术,开发中国自主知识产权的浏览器产品。1.2国内外研究现状及发展趋势常见的桌面浏览器有微软的InternetExplorer,网景的Netscape,开放源码的MozillaFireFox,以及opera,mosaic,Hotjava,字符模式的lynx等。其中IE,Opera已有嵌入式版本,以上的大多数浏览器均有跨多平台的版本。这些桌面型浏览器功能参差不齐,但大多都能实现基本的浏览功能。其中IE与Netscape对HTML页面的显示效果均堪称完美。与完美的浏览效果,功能丰富,支持多种媒体格式和视音频插件等优点形成对立的是,这些浏览器庞大的体积和对机器配置的高要求;这也是桌面浏览器和嵌入式浏览器最大的区别。另外,桌面型浏览器通常是基于通用的操作系统,用于桌面电脑如PC机、MAC机等;而嵌入式浏览器通常基于专用系统。需要指出的是,在网上常看到的一些浏览器,如Netcaptor,魔装网神,腾讯,飓风,Fantasia,金山WPSoffice的浏览器等等,均为使用IE内核的浏览器,使用了多页面多线程的方式,降低了系统资源的耗费,方便了浏览,但软件本身没有使用多少技术,可以用Delphi,VB等工具轻易开发出来(如果不要求完善的功能,只需简单到拖一个IE控件过去就行了),这也体现了微软的COM+及ActiveX技术的强大。1.3本课题实现的目标本项目是网页浏览器,包括五个部分,菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡模块以及收藏夹模块。1.菜单栏模块内容包括文件菜单,转到菜单,调整菜单和收藏夹菜单。主要是通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,还包括收藏夹的新建与整理。2.工具栏的功能则是实现常用的操作,通过点击工具图标来实现菜单栏中所有的操作。3.地址栏模块则用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。4.浏览器选项卡模块实现在同一个窗体中显示多个页面。5.收藏夹模块是本设计中最重要的一部分,包括整理收藏夹菜单和添加收藏夹菜单,可在程序运行的过程中根据用户保存的内容,填充收藏夹的内容,且在网页浏览器重新启动的情况下依旧保留有上次保存的网页。2程序开发的基础2.1Java技术2.1.1Java概述Java是一个广泛使用的编程语言,它基于Java虚拟机技术,从而实现跨平台。它简单,面向对象,不依赖与机器的结构,具有可移植性,安全性,并且提供了并发的机制,具有很高的性能。其次,它最大限度的利用了网络,Java的小应用程序(applet)可在网络上传输而不受CPU和环境的限制,另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统[2]。Java平台是一种纯软件平台,它有三个版本JavaSE、JavaEE、JavaME。JavaSE允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE还包含了支持JavaWeb服务开发的类,并为JavaEE这个版本提供基础。JavaEE下有很多流行的开发框架,像Struts、Spring、Hibernate这种流行的所谓SSH组合等。JavaME应用领域像各种移动设备和嵌入式设备,比如:手机、PDA、电视机顶盒和打印机。2.1.2Java平台简介Java平台版本Java平台版本主要有:J2EE(企业版本)、J2SE(标准版本)、J2ME(迷你版本)。这三个版本有不同的用途,J2EE主要用于分布式的网络程序的开发,如电子商务网站和ERP系统;J2SE主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程[3]。Java平台的组成Java平台主要是由一个compiler(编译器),一个运行环境(runtimeenvironment),和一个核心的API组成。1.JVM(Java虚拟机):Java程序并不是直接在本地机器的操作系统上执行,而是通过JVM解释成本地的机器语言,其优点是可以保证Java代码在Windows、Linux、Solaris等操作系统上的移植性,其代价是执行速度比C代码要慢。考虑到软件越来越庞大,而计算机硬件性能越来越快,而且WEB应用的发展,其代价是可接受的[4]。2.JDK(JavaDevelopmentKit):Java平台开发包;JSDK(Java2SoftwareDevelopmentKit):Java2平台开发包。目前普遍采用J2SDK。3.JRE(JavaRuntimeEnvironment):Java运行环境,一般情况下已集成到J2SDK中,但如果用户只是执行Java程序,而不进行Java代码的开发,则只需安装JRE。Java环境变量的设置安装完J2SDK之后,需要设置环境变量,方法如下:控制面板-〉高级设置-〉环境变量-〉系统变量-〉path里添加一个路径。这个路径是安装J2SDK的bin文件夹的路径。2.1.3JDIC项目简介JDesktopIntegrationComponents,或JDIC,是一个给Java开发人员提供通过交差平台API存取本地特性的包罗万象的项目。该项目由Sun的Desktop组启动,目的是让Java应用能更好地和它们所运行的桌面环境集成[5]。为了能从开发人员那里得到想要的特性的快速反馈,他们将JDIC做成了开源项目。尽管目前没有计划,但JDIC团队正考虑把JDIC的特征加入Java核心类库的未来版本中去。JDIC分为五个部分和一个孵化中的项目:桌面:为了打开、编辑和用email邮寄文件来打开桌面程序;文件类型:设置桌面文件类型关联;浏览器:在AWT画布上嵌入本地浏览器(InternetExplorer或者Mozilla);包装器:把JavaWebStart程序转换成本地安装程序的命令行工具;托盘API:支持系统托盘图标和弹出式菜单;SaverBeans:Java中的系统屏幕保护。2.2GUI技术简介2.2.1GUI的概述GUI(GraphicsUserInterface)是指图形用户接口,当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(AbstractWindowingToolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言--"writeonce,runanywhere"许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,Sun’sownSolaris,Apple’sMacOS以及Linux。虽然最初Java是支持操作系统独立的应用程序开发,在Java提出"writeonce,runanywhere"宣言那段时间的革命导致了Javaapplet和主导桌面应用程序计划的产生。尽管从那以后大部分构建桌面应用程序的成就都慢慢衰退,Java构建图形用户界面的能力反倒增强了。跟踪JavaGUI的发展和演化,我们将发现3个主要的构建窗口程序库:AWT,Swing和SWT(StandardWidgetToolkit)。在本系统中,主要采用的是Swing。2.2.2Swing的概述Swing是SUN公司退出的第二代图形用户接口工具包,通过Swing可以开发出功能强大,界面优美的客户应用程序。Swing不但提供了很多功能完善的控件,而且其还具有良好的扩展能力,用Swing来进行交互界面的开发是一件另开发人员非常愉快的工作。Swing从诞生到现在大致经历了如下几个阶段。Swing项目是从1996年底开始的,在项目开始的同时所有的参与者共同选定了这个名称,目的就是开发一个不依赖于本地系统的图形用户接口工具包。1997年后半年Swing进入测试阶段,并在1998年春随同JDK1.1首次发行,对于JDK1.1之前的版本,是不能使用Swing库的。Swing从首次发行开始,就不断快速的成长,自JDK1.2之后,便被完全集成到了java的标准类库中,成为java基础类库(JFC)大家族中一个重要组成部分。2.2.3Swing的特点Swing的特点主要包括完全轻量级的控件、可插拔的感观风格、更多的控件扩展3个方面。完全轻量级的控件:几乎所有的Swing控件都是轻量级的、纯java开发的,这样在控件对自己进行绘制时就不会依赖本地操作系统平台的对等控件,而是使用绘制图形的基本元素直接通过java平台在屏幕上进行绘制,这样就避免了早期不是使用轻量级控件的java图形用户界面程序在不同的操作系统中运行时有不同的外观,切换操作系统后显示不正常等问题[6]。可插拔的感观风格:Swing在界面显示上很吸引人的一点就是支持可插拔的感观风格,主要包含以下几个方面:Swing能够模拟各种不同操作系统的感观风格,其类库中就包含了Windows,UnixMotif,LinuxGTK,MacOSX以及JavaMetal等感观风格。如果有需要,开发人员还可以通过系统提供的接口编写自定义的感观风格。Swing还允许用户在不关闭应用程序的情况下,在各种感观风格之间进行自由切换。系统自带的JavaMetal感观风格合并了众多风格中最好的图形元素,甚至增加了一些属于其自己的特性。现在的Metal感观风格支持多种不同的主题,各主题之间在颜色和字体等方面都有所不同,用户如果有需要,还可以开发自己的主题。更多的控件扩展:Swing中增加了许多新的控件并且为每个控件都增加了工具提示的功能,同时Swing还支持任意数量嵌套边框的镶边替代物,并且可以任意的将键盘事件绑定到控件中。2.3开发环境以下版本是本次使用:操作系统:WindowsXPJava虚拟机:JDK1.6开发工具:MyEclipse5.53系统的总体分析3.1需求分析本模块要实现的功能模块包括:菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡模块以及收藏夹模块。1.菜单栏模块内容包括文件菜单,转到菜单,调整菜单和收藏夹菜单。主要是通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,还包括收藏夹的新建与整理。2.工具栏的功能则是实现常用的操作,通过点击工具图标来实现菜单栏中所有的操作。3.地址栏模块则用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。4.浏览器选项卡模块实现在同一个窗体中显示多个页面。5.收藏夹模块是本设计中最重要的一部分,包括整理收藏夹菜单和添加收藏夹菜单,可在程序运行的过程中根据用户保存的内容,填充收藏夹的内容,且在网页浏览器重新启动的情况下依旧保留有上次保存的网页。3.2系统结构与设计分析3.2.1响应模式用户在地址栏输入一个URL,单击“转到”按钮,请求发出,浏览器内核进行读取识别,并通过特征提取模块进行特征比对,按照网页分类算法对网页类别库中的网页中符合的网页提取出来返回给用户。用户www用户wwwIE内核网页类别库特征提取模块网页分类算法图3-1响应模式3.2.2结构分析本模块设计的浏览器,有菜单栏,工具栏,地址栏,页面显示区,收藏夹。它的主要特点有:1.基于IE内核,采用多窗口多线程工作方式,节约了系统资源,稳定性好,不会像那样因打开多窗口而使系统速度缓慢,甚至出现“程序没有相应“等现象。2.对网页自动分类,这是它的特点。当用户在浏览网页进入一个从未到过的网站时,很容易导致迷航,用户先阅读网页才能判定该网页是否是自己所感兴趣的网页。这样,用户把大量时间和精力花费在不必要的网页上,分散了用户的注意力。3.提供类别导航功能。它将已分类的网站地址置入各类别中,用户可以根据自己感兴趣的主题进行访问和浏览。类别的跟新,修改,添加等维护一般由系统进行,也可由用户自己手动维护。系统可以根据类别的更改而自行调整系统的分类结果。3.3功能结构图以下是本模块的功能结构图:网页浏览器功能模块网页浏览器功能模块浏览器操纵收藏夹前进后退停止刷新转到添加收藏夹整理收藏夹主页创建文件夹选择收藏夹节添加创建文件夹重命名移动到删除图3-2功能结构4系统功能与实现浏览器的窗体是程序的主界面,它包括浏览指定的网站,收藏网站信息等业务。主要由菜单栏,工具栏,地址栏,浏览器选项卡和状态栏组成。4.1核心技术4.1.1JDIC项目实现浏览器组件浏览器组件API可以让你访问几个浏览器事件以及在历史记录上的控制(向前,后退,刷新)[7]。未来修订的API版本希望能提供更多存取浏览器和任意装载的文档的功能。在你的应用里使用浏览器组件实在是非常容易:importorg.jdesktop.jdic.browser.*;import.*;importjavax.swing.*;publicclassBrowserTest{publicstaticvoidmain(String[]args)throwsException{WebBrowserbrowser=newWebBrowser();browser.setURL(newURL(""));JFrameframe=newJFrame("BrowserTest");frame.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组件,因此你可能陷入与Swing结合的困境。混合它们的两个规则是1)不要让Swing和AWT组件重叠和2)在你的菜单上调用setLightWeightPopupEnabled(false)否则它们将消失在浏览器组件后边。4.1.2收藏夹的保存与装载收藏夹模块的功能可以将正在浏览的网址添加到收藏夹中,并且提供分类,通常的做法是将收藏夹的内容存放在集合类中,如果程序关闭,收藏夹的内容和分类将丢失,因为它们没有被持久化。将收藏夹持久化的方法有两种:持久化到数据库可以将收藏夹内容全部保存到数据库中,在程序关闭时,收藏夹的内容保存在数据库而不在内存中,这样可以避免数据丢失,在程序下次启动的时候,可以从数据库中读取收藏夹内容从新显示。持久化到文件中另一种方法将收藏夹的内容保存到一个数据文件中,例如”favorite.data”,这种方法保存收藏夹数据可以节省访问数据库的开销,也可以随浏览器模块一同发布,既方便又节省资源。4.1.3阻止IE打开弹出窗口使用WebBrowser组件编写的浏览器模块,可以在本窗口中浏览各种信息,可以通过超级链接访问其他网页,如果某个超级连接要在新的窗体中打开网页,那么这个网页会默认使用IE或操作系统默认的浏览器打开,这就破坏了模块的外观,使本模块处于可有可无的状态[8]。因此必须拦截这些需要在新窗体显示的网页信息,本模块继承了WebBrowser组件实现了浏览器组件的Browser类,它重写了父类的willOpenWindow()方法,在有需要显示在新窗体的网页信息时,该方法会创建新的选项卡显示这个网页。4.2菜单栏的实现浏览器模块的菜单栏几乎容纳了所有功能的操作连接,它用于整个浏览器模块的导航,快速方便的执行浏览操作,例如前进,后退,刷新等。4.2.1文件菜单文件菜单包括”设置主页”,”打印”,”退出”3个菜单项,其中”设置主页”将用户输入的网址信息创建为URL对象。如果创建URL对象时抛出异常,说明URL格式不标准,将以对话框的形式提示用户URL格式非法,当输入格式正确时,程序将URL对象序列化到收藏夹得数据文件中。单击打印菜单时,将调用工具栏上”打印”按钮的doClick()方法,执行按钮的鼠标单击操作,程序会执行按钮的时间处理代码。单击菜单栏的“退出”菜单项时,菜单项的事件监听器将调用业务方法完成退出命令。在业务方法中执行了System类的exit()方法退出Java虚拟机,从而终止程序运行。4.2.2转到菜单转到菜单包含了浏览器的控制命令,这些命令包括”主页”,”前进””后退””停止””刷新”。这些控制命令,在菜单栏中也提供了相应的操作按钮,为减少代码重复,本模块在这些菜单栏的事件处理中直接调用工具栏相应按钮的doClick()方法,执行按钮的业务代码。//停止菜单项的业务privatevoidstopMenuItemActionPerformed(java.awt.event.ActionEventevt){stopButton.doClick();//执行停止按钮的单击方法 }//刷新菜单项的业务方法privatevoidrefreshMenuItemActionPerformed(java.awt.event.ActionEventevt){refreshButton.doClick();//执行刷新按钮的单击方法 }//后退菜单项的业务方法privatevoidbackMenuItemActionPerformed(java.awt.event.ActionEventevt){backButton.doClick();//执行后退按钮的单击方法 }//前进菜单项的业务方法privatevoidforwardMenuItemActionPerformed(java.awt.event.ActionEventevt){forwardButton.doClick();//执行前进按钮的单击方法 }//打印菜单项的业务方法privatevoidprintMenuItemActionPerformed(java.awt.event.ActionEventevt){printButton.doClick();//执行主页按钮的单击方法 }4.2.3调整菜单本模块的网页浏览器部分布置在一个选项卡组件中,选项卡的标签名称为网页的标题命名,这样用户可以创建多个选项卡浏览更多的网站。4.3工具栏的实现工具栏用于执行常用的操作,网页浏览器模块的控制命令使用最频繁,因此将浏览器的控制命令提取到工具栏中。工具栏上的每个按钮都设置了文本提示,每个按钮都添加了单独的事件监听器,在不同的事件监听器中调用处理该按钮业务的方法[9]。编写各个按钮的事物处理方法,这些业务处理方法被不同按钮的事件监听器调用。浏览器的控制按钮的业务逻辑,基本通过调用Browser浏览器组件的方法实现,例如print()方法可以执行打印任务,//后退按钮的事件处理方法privatevoidbackButtonActionPerformed(java.awt.event.ActionEventevt){Browserbrowser=getSelBrowser();if(browser.isBackEnabled()){//如果后退操作可行 browser.back();//执行后退 } }//停止按钮的事件处理方法privatevoidstopButtonActionPerformed(java.awt.event.ActionEventevt){Browserbrowser=getSelBrowser();browser.stop();//执行停止操作 }//前进按钮的事件处理方法privatevoidforwardButtonActionPerformed(java.awt.event.ActionEventevt){Browserbrowser=getSelBrowser();if(browser.isForwardEnabled()){//如果前进操作可行browser.forward();//执行前进操作 } }//刷新按钮的事件处理方法privatevoidrefreshButtonActionPerformed(java.awt.event.ActionEventevt){Browserbrowser=getSelBrowser();browser.refresh();//执行刷新操作 }//主页按钮的事件处理方法privatevoidhomePageButtonActionPerformed(java.awt.event.ActionEventevt){Browserbrowser=getSelBrowser();browser.setURL(homePage);//设置浏览器当前网址 }4.4地址栏的实现地址栏是网页浏览器的重要功能,它接收用户输入的将要访问的网站地址,然后将该地址传送给浏览器组件,呈现指定的网页内容。网页浏览器模块的地址栏包含输入网站URL地址的文本框和一个执行浏览业务的“转到”按钮。当用户在地址栏的地址文本框输入网站地址并单击右侧的“转到”按钮时,它下面的浏览器选项卡将创建一个新的选项卡,并在选项卡中放置一个浏览器组件显示新的网页内容[10]。jLabel1.setText("地址:"); //地址标签addressBar.add(jLabel1,BorderLayout.WEST); //添加标签到地址栏address.setText("http://"); //设置地址文本框内容addressBar.add(address,BorderLayout.CENTER); //添加地址文本框到地址栏goButton.setText("转到"); //设置转到按的文本goButton.setFocusable(false);goButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);goButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);//添加转到按钮的事件监听器,当单击转到按钮时,执行业务方法goButton.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){goButtonActionPerformed(evt); //调用转到按钮的业务方法 } });addressBar.add(goButton,BorderLayout.EAST); //添加转到按钮到地址栏4.5浏览器选项卡的实现以前的浏览器都是单个窗体的软件,在每次需要同时浏览不同的网站或者在新窗口显示网页的情况下,都需要重新启动或弹出一个浏览器软件来显示指定的网页内容。因此本模块使用浏览器面板作为所有浏览器组件的容器:4.5.1继承扩展浏览器组件由于网页的超级链接或JavaScript脚本可以在新的浏览器窗口中显示内容,而新建立的浏览器窗体会使用默认的浏览器打开网页,因此本模块必须继承WebBrowser类来编写自己的浏览器组件类Browser[11]。这样就可以重写父类的willOpenWindow()方法拦截弹出新窗体显示网页内容的事件,然后再该方法中使用自己的事件,在选项卡面板中创建浏览器组件显示网页。4.5.2编写浏览器面板将扩展的Browser浏览器组件封装在一个面板中实现浏览器面板,这个面板将被添加到存放浏览器的选项卡面板中.浏览器面板添加了Browser浏览器组件的实例对象,并且为浏览器组件添加了事件监听器[12]。4.5.3编写浏览器选项卡面板本模块的选项卡面板用于存放浏览器组件,使浏览器支持选项卡界面创建选项卡时为面板添加鼠标单击事件,在用户单击选项卡的标签时执行业务方法。另外,还设置了选项卡面板的模型对象,包括选项卡的选择事件的处理方法。CreateBrowser()和getSelBrowser()方法分别用于在选项卡面板创建浏览器面板和获取当前选择的面板中的浏览器组件实例[13]。本模块使用JDIC类库来实现浏览器界面,该类库可以从/地址下载,在IE地址栏输入该网址后,浏览器将显示JDIC的项目首页。下载该类库后是一个压缩文件,将该文件解压缩并将类库的JAR文件和EXE文件添加到Java程序的类路劲中,DLL文件需要放到运行java程序的当前路径,如果是Eclipse的项目中使用该类库,那么DLL文件需要放到项目的根文件夹中,与src同级。4.5.4编写浏览器组件监听器在编写浏览器面板组件时,在面板中创建了浏览器组件,同时也为该组件添加了事件监听器[14]。4.6收藏夹的实现收藏夹是浏览器不可缺少的功能,它记录上网时常用的,经典的网站地址。4.6.1添加到收藏夹在浏览器模块的主窗体上单击”收藏夹”/”添加到收藏夹”菜单项,将启动添加收藏夹功能,该功能能将当前浏览器访问的网站地址添加到收藏夹中,日后可以从收藏夹中直接选择浏览器指定的网址。添加收藏夹功能的实现步骤如下:1.编写”添加到收藏夹”菜单项的业务代码,这个方法将有菜单项的事件监听调用,方法内部获取了选项卡面板当前的选项卡索引,然后使用所有获取选项卡的标题,使用该标题创建了”添加到收藏夹”对话框的实例,把其余的工作交由该对话框实现。2.在”添加到收藏夹”对话框中编写初始化收藏夹树组件的方法,该方法将在对话框的构造方法中被调用,它将调用loadMenu()方法添加收藏夹菜单的内容。3.编写装载收藏夹菜单内容的loadMenu()方法,该方法使用递归算法遍历收藏夹的数据集合对象,从这个集合对象中装载收藏夹的所有内容到”收藏夹”菜单中。4.编写”确定”按钮的业务处理方法,该方法在用户输入名称标识并单击按钮时被”确定”按钮的事件监听器调用,它将完成从读取用户输入名称标识到保存网站地址到收藏夹的全过程。4.6.2整理收藏夹整理收藏夹的实现比较复杂,它的树组件要显示的收藏夹内容包括文件夹和收藏的网址信息,而且可以对这些信息进行维护和移动操作。其中包括”创建文件夹”,”重命名”,”删除”操作。实现过程如下:1.编写”整理收藏夹”菜单项的业务处理方法,该方法将在单击该菜单时由菜单项的时间监听器调用,方法的实现非常简单,因为所有业务都由”整理收藏夹”对话框完成。2.编写”整理收藏夹”对话框的构造方法,在构造方法中分别调用初始化对话框界面的方法和初始化收藏夹树组件的方法。3.编写初始化树组件的方法,该方法将调用loadFavoriteNode()方法装载树节点内容,4.编写装载树组件节点内容的方法,该方法使用了递归方法,原因是要遍历的内容包括子节点的嵌套。6.编写”重命名”按钮的事件处理方法,作为维护操作重命名是必不可少的,特别是收藏夹中的文件夹。如果没有重命名,则需要删除文件,重新建立;如果文件夹中包含大量的收藏信息,会损失很多资源。单击”重命名”按钮时,将在事件监听器中调用该方法完成命名操作。7.编写”删除”按钮的事件处理方法,该方法将在”删除”按钮的事件监听器中被调用。8.编写”移动到”按钮的事件处理方法,该方法用于移动收藏选项到其他文件夹中,其按钮的事件监听器将调用该方法。5测试5.1测试与调试的基本概念软件测试是整个系统开发过程中一个重要环节,是成功开发本系统的重要保证。软件测试阶段的主要任务是发现并排除在分析、设计、编码各阶段中产生的各种类型的错误,以得到可使用的软件系统[15]。常用的软件测试方法有两大类:静态测试方法和动态测试方法。静态测试方法是程序远普遍采用的一种方法,其内容主要是通过人工模拟软件系统的执行方式,以代码会审、走查、办公室检查的形式分析或核查系统的功能实现、编码过程的正确性。动态测试方法是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。按照通常的软件系统测试,可以分别进行单元测试、集成测试、确认测试、系统测试,最后进行验收测试,即由用户通过试用系统而进行测试,检验系统的可用性及与用户配合的程度。调试是软件开发过程中最艰巨的脑力劳动,调试开始时,软件开发者仅仅面对着错误的征兆,然而在问题的外部现象和内在原因之间往往并没有明显的联系,在组成程序的密密麻麻的元素中,每一个都可能是错误的根源。如何能在浩如烟海的程序元素中找到有错误的那个(或几个)元素,这是调试过程中最关键的技术问题。本设计中调试的方法主要是设置断点跟踪。使用断点跟踪可以找到程序的出错位置,缩小查找错误的范围,提高调试的效率。调试的任务是及时改正测试过程中发现的软件错误[16]。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正。现阶段己研究出一些帮助调试的技术,主要有输出存储器内容、打印语句和自动工具。5.2测试时间本系统的测试分为以下几个阶段进行:第一阶段:根据需求分析划定软件中要测试的功能和性能的范围,确定测试的内容。第二阶段:分模块对系统中的各模块进行测试,对需求分析中各模块的功能和性能及用户的特殊需求进行测试,记下各模块的所有的问题,及时解决。第三阶段:在模块测试的基础上将各模块拼接进行整体功能和性能的测试。第四阶段:综合测试。5.3软件测试的内容分模块对其进行测试:1.菜单栏模块:能通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,收藏夹的新建与整理。图5-1主页图5-2文件菜单图5-3转到菜单图5-4调整菜单图5-5收藏夹菜单2.工具栏模块:能通过点击工具图标来实现一些常用的操作。图5-6工具栏的后退功能功能3.地址栏模块:用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。图5-7输入新浪网址点转到图5-8成功转到指定网页4.浏览器选项卡模块:实现在同一个窗体中显示多个页面。图5-9多页面显示5.收藏夹模块:能对收藏夹进行添加网页和整理操作。图5-10往文件夹添加图5-11整理收藏夹6结论本文主要探讨了基于java的浏览器的设计与实现。并且实现浏览器的一些简单功能。包括:前进和后退,设置主页,添加收藏夹和管理收藏夹,刷新页面,还有在同一个窗体中显示多个页面。该浏览器程序基于IE内核,采用多窗口多线程工作方式,节约了系统资源,稳定性好。而且还提供类别导航功能,将已分类的网站地址置入各类别中,用户可以根据自己感兴趣的主题进行访问和浏览。然而,系统仍然存在很大的改进空间,可以通过进一步的设计提高性能和实用性。由于本人的水平有限,对其中的某些问题未能进行深入的分析和研究,还需要在今后的工作中努力学习和探讨。文中的不足之处,敬请各位老师指正。参考文献[1]《程序员》杂志社.程序员2011合订本下[J].电子工业出版社,2011,24(22):150-160[2]马俊,范玫.JAVA语言面向对象程序设计[M].机械工业出版社,2009:183-190[3]于万波.Java语言实用教程[M].清华大学出版社,2008:143-150[4]刘亚滨.精通Eclipse[M].北京:电子工业出版社,2004:45-80[5]马少平.人工智能[M].清华大学出版社,2011:78-110[6]耿祥义.Java课程设计[M].清华大学出版社,2009:67-90[7]耿祥义,张跃平.Java面向对象程序设计[M].清华大学出版社,2010:88-120[8]朱福喜,唐晓军.Java程序设计技巧与开发实例[M].人民邮电出版社,2010:44-130[9](美)BruceEckel著,陈昊鹏译.Java编程思想[M].第四版.机械工业出版社,2009:120-140[10]飞思科技产品研发中心.Java2应用开发指南[M].第二版.电子工业出版社,2011:182-200[11]於东军,杨静宇,李千目,王过全.Java程序设计与应用开发[M].清华大学出版社,2011:120-140[12](美)昊斯特曼著,叶乃文,邝劲筠,杜永萍译.Java核心技术:卷Ⅰ基础知识(原书第8版)[M].机械工业出版社,2010:200-230[13]李刚.疯狂Java讲义[M].电子工业出版社,2011:120-150[14]李兴华.名师讲坛——Java开发实战经典[M].清华大学出版社,2009:110-130[15]雍俊海.Java程序设计教程[M].清华大学出版社,2010:168-174[16]孙家广.软件工程理论、方法与实践[M].清华大学出版社,2011:132-148致谢经过两个多月的努力,毕业设计已经基本上完成了。在毕业设计期间他们给予了我悉心指导和大力帮助,在我的选题和论文撰写过程中对文档进行了认真检查,严格督促和仔细批阅,并对我的课题提出了许多富有启发性和建设性的意见和建议。同时我还要感谢我身边的同学是他们一直的支持给了我坚持自己做下去的勇气,并在论文的撰写上给了我很大的帮助。在做毕业设计的过程中好几次我都想放弃了,是他们鼓励我,告诉我我能行,最后在同学和老师的帮助和指导下我成功的完成了自己的毕业设计,在这里送上我由衷的感谢。基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论