ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:227.08KB ,
资源ID:7665011      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7665011.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Java的浏览器的设计与实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Java的浏览器的设计与实现.docx

1、基于Java的浏览器的设计与实现基于Java的浏览器的设计与实现摘 要 本课程设计主要运用java语言在Eclipse编程环境下设计一个Web浏览器,从而在Windows 98/2000/XP程序运行平台上来实现它的一些基本功能,本课程设计基本实现了预定目标。浏览器的设计包括了图形界面设计和底层设计,在整个设计过程中需要首先构建好图形界面,然后再编程来实现组件以完成相应的功能,浏览器图形界面作为系统和用户之间反馈信息的平台,起着尤为关键的作用。1 引 言当今世界是一个以计算机网络为核心的信息时代,互联网为人们快速获取、发布和传递信息提供了便捷,而浏览器作为互联网上查找信息的重要工具,给人们提供

2、了巨大而又宝贵了信息财富,受到了大家的高度重视。网页浏览器是显示网页服务器或档案系统内的文件,并让用户与这些文件互动的一种软件。它用来显示在万维网或局域网内的文字、影像及其他资讯。浏览器作为重要的系统应用软件是不可或缺的。但目前,浏览器产品的市场被少数国外大公司垄断,众多的小型浏览器也尚处于发展期,而国内的自主技术的浏览器更屈指可数,刚刚进入实用阶段。迫切需要更多的人来关注浏览器技术,开发中国自主知识产权的浏览器产品。1.1 项目设计目的此次课程设计的目的首先是让我们了解信息产业的多元性,把学到的知识运用到实际中,培养学生的综合模拟和实际操作能力,提高学生理论联系实际的能力,开拓创新;其次是掌

3、握使用Eclipse工具设计一个简单的Web浏览器的方法,从而实现对资源的有效访问;掌握Java语言编程,并可综合运用这些知识解决一定的实际问题,使我们在所学知识的综合运用能力上以及分析问题、解决问题能力上得到一定的提高;认识到团队精神的重要性,能够通过良好的分工合作来完成既定目标。 1.2 项目设计内容(1)熟悉超文本传送协议(HTTP)进行通信;(2)熟悉Eclipse编程环境及Swing、网络编程方法;(3)理解B/S工作模式;(4)实现简单的浏览器程序;1.3 项目设计要求(1)按要求编写课程设计报告书,能正确阐述设计结果。(2)通过课程设计培养学生严谨的科学态度、认真的工作作风和团队

4、协作精神。(3)学会文献检索的基本方法和综合运用文献的能力。(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。2所用开发环境Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、C

5、DT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用于Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。12.2 JDK简介 JDK(Java Development Kit)是Sun

6、Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Environment),Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。掌握 JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK。JDK包含的基本组件包括:javac 编译器,将源程序转成字节码 jar 打包工具,将相关的类文件打包成一个文件 javadoc 文档生成器,

7、从源码注释中提取文档 jdb debugger,查错工具 java 运行编译后的java程序(.class后缀的) appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具3设计原理3.1 JAVA语言简介Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Ja

8、va平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平

9、台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。Java主要特性:Java语言是简单的、面向对象的、分布式的、健壮的、安全的、体系结构中立的、可移植的、解释型的、高性能的、多线程的、动态的。

10、3.2 图形用户界面(GUI)图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户介面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。如Windows是以图形界面方式操作的,因为你可以用鼠标来点击按钮来进行操作,很直观。GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。GUI由桌面、视窗、单一文件界面、多文件界面、标签、菜单、图标、按钮这几部分组成。23.3 Java Swing概述Swing是一个用于开发Java应用程序用户界面的开发工具包,

11、并以此为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。Swing是建立在AWT之上的,包括大多数轻量组件的组件集。除提供了AWT所缺少的、大量的附加组件外,Swing还提供了替代AWT重量组件的轻量组件。Swing还包括了一个使人印象深刻的、用于实现包含插入式界面样式等特性的图形用户界面的下层构件。因此,在不同的平台上,Swing组件都能保持组件的界面样式特性,如双缓冲、调试图形和文本编辑包等。还具有以下特点: (1)拥有一个丰富、便捷的用户界面元素集合。 (2)对底层平台依赖的很少,因此

12、与平台相关的bug很少。 (3)给予不同平台的用户一致的感官效果。3.4抽象窗口工具箱(AWT)AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统, 图形和用户界面器件工具包。AWT是Java基础类 (JFC)的一部分,为Java程

13、序提供图形用户界面(GUI)的标准API。AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括: 用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。3.5布局算法本文中的布局应理解为界面输出前的预演和处理位置等信息的算法,而不是具体的画图和界面输出。布局算法的好坏直接关系到界面的输出效果,但布局算法也是要根据GUI所能实现的输出效果来设计的,所以,GUI往往成为系统的瓶颈,如果GUI提供的支持有限,即使有再好的

14、布局算法,也是纸上谈兵,无用武之地。在Swing中有以下几种简单的布局管理器:(1)FlowLayout流式布局管理器FlowLayout是最简单的布局管理器,按照组件的添加次序将它们从左到右地放置在容器中。当到达容器边界时,组件将放置在下一行中。(2)BorderLayout边界布局管理器BorderLayout为在容器中放置组件提供了一个稍微复杂的布局方案。BorderLayout把容器分为五个区域:东、南、西、北和中。东占据容器的右侧,南占据容器的下侧,以此类推。(3)GridLayout网格布局管理器GridLayout将容器分割成许多列和行,组件被填充到每个网格中。添加到容器中的组件

15、首先放置在左上角的网格中,然后从左到右放置其他组件,直至占满该行的所有网格,接着继续在下一行中从左到右放置组件。(4)CardLayout卡片式布局管理器CardLayout将界面看作一系列的卡片,在任何时候只有其中一张卡片是可见的,这张卡片占据容器的整个区域。当某个容器被创建后,就会有一个默认的布局管理器。Window、Frame和Dialog的默认布局管理器是BorderLayout,Panel和Applet的默认布局管理器是FlowLayout。可以调用容器的setLayout()方法来设置容器的布局管理器。34 浏览器的设计4.1功能需求的分析我们所设计的浏览器功能比较简单,主要概括为

16、以下几点:(1) 界面:包括窗口,菜单,输入框,工具条,滚动条等的支持。(2) 实现简单网页的布局,对简单网页的查看。(3)具有超链接功能。(4) 能够返回到主页面。(5) 支持基本IO(Input/Output,输入/输出)。(6)能够打开本地文件。4.2设计步骤我在整个团队中主要负责界面的设置,界面是一个直接反映信息交互的平台,起着举足轻重的作用,在这里我就怎样构建用户界面作为重点进行阐述。1.容器嵌套选择好容器就是为界面构造一个基本的骨架,然后再在其中添加各个组件。在GUI中可供选择的容器有Frame, Dialog, Applet, Panel,其中Panel是可视容器,Frame是顶

17、级容器。我们要用Panel和Frame容器。继承顶级容器的方法、功能和参数,将菜单栏置于顶级容器;在次级容器contentpan中加入了工具栏、状态栏、滚动条、编辑区域等,然后用边界布局管理器将所需的组件添加进来,具体所需组件如下表所示:表4-1 组件复用表功能所复用的组件菜单复用JMenu组件菜单项复用JMenuItem组件工具栏复用JPanel组件按钮复用JButton组件地址栏复用JLabel组件状态栏复用JPanel组件滚动条复用scrollPane组件2.组件定义 与其他编程语言类似,在JAVA中也必须首先对变量以及所要用到的组件定义,确定其合法性,才能在后面的程序中被调用赋值。定义

18、代码如下:private Container contentPane; /变量内容窗格 private JTextField addressTex; /文本框private JLabel statusLbl; /状态栏用private分别对滚动条、编辑显示区域、菜单栏、文件选择框、按钮等进行定义。3.组件初始化、添加和监听mb=new JMenuBar(); / 初始化菜单栏m1=new JMenu(File); / 初始化菜单m2=new JMenu(Edit);m3=new JMenu(View);mb.add(m1); / 将菜单加入菜单栏mb.add(m2);mb.add(m3);/对

19、File菜单各个菜单项初始化mi1=new JMenuItem(Open File);mi2=new JMenuItem(Close);mi3=new JMenuItem(Quit);Edit、View菜单的各个菜单项进行初始化过程与之类似/对File菜单各个菜单项进行监听mi1.addActionListener(new OpenFileActionListener();mi2.addActionListener(new QuitActionListener();mi3.addActionListener(new QuitActionListener();4设置布局 pp.setBackgr

20、ound(Color.pink); / 设置颜色pp.setLayout(new FlowLayout(); / 流式布局管理器,对组件由左至右布局pp.add(btn2); /对按钮UNDO布局pp.add(addressTex); /对地址栏布局pp.add(btn1); /对按钮GOTO布局contentPane.add(pp,BorderLayout.NORTH); /将工具栏放置在界面的北方 contentPane.add(statusLbl,BorderLayout.SOUTH); /状态栏布置在界面的南边 centerPane = new JScrollPane(); / 浏览器

21、体部布置在界面中央JViewport view = centerPane.getViewport(); / 显示区域textArea = new JEditorPane(); / 内容显示5. 按钮功能的实现每个按钮需要对应到相应的功能。我们设计的浏览器只有UNDO和GOTO两个按钮。UNDO对应浏览页面的后退浏览,实现这个功能是在监听到用户点击此按钮时后退到上一浏览页面。而GOTO就是当系统监听到地址栏有地址写入时,浏览器先判断这个地址长度是否大于零并且此地址是不是以HTTP开头,如果是,则浏览器主动链接到目的地址;若判断出这个地址长度大于零并且此地址不是以HTTP开头,则在地址前面自动加上

22、HTTP,找到目的地址。5浏览器的实现5.1 GOTO按钮功能测试在程序中地址栏默认网址为“ 图5.1点击Goto进入XX主页截图5.2测试菜单栏选项在地址栏中输入“ 图5.2主菜单File 的子菜单实现图图5.3 主菜单Edit的子菜单实现图 图5.4主菜单View的子菜单实现图点击打开File菜单中的open file按钮时,则打开本地文件。如图5.5所示: 图5.5 主菜单File中OpenFile的实现5.3超链接的实现 在XX主页中点击“更多”,可直接链接到下一显示页面,证明浏览器实现了链接功能,再点击“Undo”按钮,页面又可返回到XX主页。超链接的实现如图5.6所示: 图5.6

23、超链接的实现图经过以上几个步骤的测试,图形界面的设计能够与底层设计达到完美契合,因此我们团队所设计的浏览器实现了预定功能,基本达到了此次课程设计的要求,浏览器设计成功。6 结束语这次课程设计历时两个星期,在这两个星期的学习中,我初步掌握了有关JAVA的基础知识,能够理解较为简单的JAVA程序,基本实现课程设计的要求。我认为这次课程设计最大的收获是深刻地认识到了团队合作的重要性。在以往的课内学习中,我个人懂得了较多的理论知识,同时也进行了上机实践加强自己对理论的理解并提升了实际操作能力。而本次课程设计相对于实验又有了质的飞跃,我们通过最初的特色组队、确立团队目标,然后缜密构思、分工合作,最终实现

24、了我们设计的浏览器的基本功能。这一路做过来,我们多次请教了老师,翻阅了有关参考书,最重要的是进行了团队激烈的讨论,遇到问题再解决问题然后再发现问题再解决的思想火花的碰撞在这一过程的循环往复中我深深地体验到了思考和学习的乐趣。在享受这一过程中,我不仅学到了新的知识,我的思维也更加开阔、更加灵活、更加全面了。短短的几星期中,我有过失败的沮丧,也有过成功的欣喜。在一次次的挫折和失败中我不断寻找真理,寻找解决问题的最佳途径,更加深刻地体会到了“失败乃成功之母”的含义,惰性和轻易放弃成了我最大的敌人,很庆幸,我战胜了它们,其实是战胜了自己,最终赢得了硕果。如同需要浇灌才能长成的硕果一样,我的最终成果也是

25、用辛勤汗水培育而来的,当然也离不开老师的耐心指导和同学的无私帮助。在这里我也要对敬爱的老师和同学们的深切关怀表示衷心的感谢!对我而言,知识上的收获固然重要,精神上的丰收更加可贵。面对生活其实也是相同的道理,不抛弃不放弃是成功的前提。人生是在不断地攀登中提升的,山的绵延组成了曲折的人生,当我们经历过风雨最终爬到顶峰看到美轮美奂的日出时,一切艰难都显得苍白无力。挫折是一份财富,经历是一份拥有。感谢大家让我拥有这份最珍贵的财富!参考文献1 2004马俊 范玫 .JAVA语言面向对象程序设计. 机械工业出版社. 2009年2于万波.Java语言实用教程. 清华大学出版社. 2008年3刘亚滨.精通Ec

26、lipse.北京:电子工业出版社.2004附录1:Web服务器设计与实现源程序清单% 程序功能:Web服务器设计与实现% 程序作者:陈璐 % 最后修改日期:2009-07-03package com.briup.browser;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Container;import java.awt.FileDialog;import java.awt.FlowLayout;import java.awt.Frame;import

27、java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.FilenameFilter;import java.io.IO

28、Exception;import java.io.InputStream;import java.io.InputStreamReader;import .MalformedURLException;import .URL;import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import javax.swing.JButton;import javax.swing.JEditorPane;import javax.swing.JFileChooser;import javax.swing.JFra

29、me;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JProgressBar;import javax.swing.JScrollPane;import javax.swing.JTextField;import javax.swing.JTree;import javax.s

30、wing.JViewport;import javax.swing.event.HyperlinkEvent;import javax.swing.event.HyperlinkListener;import javax.swing.text.html.HTMLDocument;import javax.swing.text.html.HTMLFrameHyperlinkEvent;import javax.swing.tree.DefaultMutableTreeNode;import com.briup.browser.Browser;public class Browser extend

31、s JFrameprivate Container contentPane;private JTextField addressTex;/文本框private JLabel statusLbl;private JScrollPane centerPane;/初始化滚动条private JEditorPane textArea;/编辑显示区域private JMenuBar mb; / 文件选择框private JFileChooser chooser1=new JFileChooser();private JButton btn1,btn2,btn3;private ArrayList list; pri

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1