web服务器设计论文.docx

上传人:b****2 文档编号:615606 上传时间:2022-10-11 格式:DOCX 页数:21 大小:116.01KB
下载 相关 举报
web服务器设计论文.docx_第1页
第1页 / 共21页
web服务器设计论文.docx_第2页
第2页 / 共21页
web服务器设计论文.docx_第3页
第3页 / 共21页
web服务器设计论文.docx_第4页
第4页 / 共21页
web服务器设计论文.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

web服务器设计论文.docx

《web服务器设计论文.docx》由会员分享,可在线阅读,更多相关《web服务器设计论文.docx(21页珍藏版)》请在冰豆网上搜索。

web服务器设计论文.docx

web服务器设计论文

Web服务器设计——I/O接口的实现

学生姓名:

xx指导老师:

XXX

摘要Web服务器的实现主要是服务器端接受并响应客户端的请求,本次设计是在eclipse开发平台上使用Java编程技术设计Web服务器。

该Web服务器的设计分为两大部分,分别是Web服务器面板的设计与Web服务器I/O接的实现,在本次课程设计中我们首先要建立一个Web服务器的用户面板,使用户能够直观的看到Web服务器的工作,然后实现这个服务器的通信,即实现数据传送。

最后通过对这两个模块的设计及其运行,我们通过在Web浏览器中输入Web服务器的socket,能够实现Web服务器与Web浏览器之间的通信。

关键字AWT组件;Swing组件;Socket套接字;异常处理机制;线程;流

1引言

长期以来,人们只是通过传统的媒体(如电视、报纸、杂志和广播等)获得信息。

但随着计算机网络的发展,人们想要获取信息,已不再满足于传统媒体那种单方面传输和获取的方式,而希望有一种主观的选择性,而由于计算机网络的发展,信息的获取变得非常及时、迅速和便捷。

其中,WWW技术解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得WWW成为Internet上最为流行的信息传播方式。

现在,Web服务器成为Internet上最大的计算机群,Web文档之多、链接的网络之广,令人难以想象。

可以说,Web为Internet的普及迈出了开创性的一步,是近年来Internet上取得的最激动人心的成就。

1.1课程设计的目的

通过本次课程设计,加深对计算机网络方面相关的网络知识的理解,熟悉Java语言编程以及eclipse开发平台的运用。

深入理解Web服务器的工作原理,以及如何运用Java语言在eclipse平台上来进行编程设计和实现。

掌握运用Java语言进行面板设计、实现网络连接的方法,在学习理解基本理论知识的同时锻炼独立思考解决问题的能力,并且培养综合运用专业及基础知识,理论联系实际,提高自己动手能力。

1.2课程设计的要求

(1)按要求编写课程设计报告书,能正确阐述设计结果。

(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。

(3)学会文献检索的基本方法和综合运用文献的能力。

(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

1.3设计平台

Eclipse设计平台

本次Web服务器的设计是通过Java语言的程序设计,在Eclipse平台上实现的。

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。

虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。

Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。

由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。

这种平等和一致性并不仅限于Java开发工具。

尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL和Eiffel等编程语言的插件已经可用,或预计会推出。

Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。

2设计原理

本次课程设计是要设计一个Web服务器,主要分为两大块,一是图形用户界面的设计,一是I/O接口的实现,即实现Web服务器与客户端(浏览器)之间的通信。

本课程设计只简单说明一下图形界面的设计流程,着重于介绍I/O接口的实现这一块。

在实现I/O接口(服务器与浏览器的通信)中,我们主要运用了Socket套接字、Java线程、Java异常处理机制、输入输出流的设计原理和方法,下面会着重的一一介绍。

2.1图形用户界面设计

AWT组件。

早期的JDK版本中提供了Java抽象窗口工具集(AbstractWindowToolkit,AWT),其目的是为程序员创建图形用户界面提供支持。

AWT组件定义在java.awt包中,包括组件类、组件布局类等。

其中:

组件(component)是构成图形用户界面的基本成分和核心元素。

组件类(Component)是一个抽象类,是AWT组件类层次结构的根类,实际使用的组件都是Component类的子类。

Component类提供对组件操作的通用方法,包括设置组件位置、设置组件大小、设置组件字体、响应鼠标或键盘事件、组件重绘等等。

Swing组件。

Swing组件包含了大部分与AWT对应的组件,而多数的Swing组件相对于AWT组件而言是以“J”开头。

Swing组件与AWT组件的用法基本相同,大多数的AWT组件只要在其类名前加J即可转换成Swing组件。

Swing组件与AWT组件最大的不同是,Swing组件在实现时不包含任何本地代码,因此Swing组件可以不受硬件平台的限制,而具有更多的功能。

由于所有Swing组件均是以AWT的Container类为基础开发的,因此Swing的关键技术还是AWT,Swing库是抽象窗口工具AWT库的扩展,提供了比AWT更多的特性和工具,用于建立更复杂的图形用户界面[1]。

2.2套接字Socket

Socket(套接字)是TCP/IP的编程接口,即利用Socket提供的一组API就可以变成实现TCP/IP协议。

网络上计算机任何一个应用程序都可以通过Socket与其他计算机进行通行。

Socket是通信端点的一种抽象,它提供了一种发送和接收数据的机制[2]。

Socket所要完成的通信就是基于连接的通信,建立连接所需的程序分别运行在客户端和服务器端,其主要步骤为:

(1)建立连接:

首先客户端程序申请连接,而服务器程序监听所有端口,判断是否有客户端程序的服务请求,当客户端程序请求和某个端口连接时,服务器就将Socket连接到该端口上,此时服务器和客户程序之间建立了一个专用的虚拟连接。

(2)数据通信:

客户程序可以像Socket写入请求,服务器程序处理请求并把处理结果通过Socket送回。

(3)拆除连接:

通信结束,将所建立的虚拟连接拆除。

ServerSocket类和Socket类分辨应用于服务器端和客户端的Socket通信,其中,创建了一个ServerSocket对象就创建了一个监听,为了能够随时监听客户端的请求,可以引用ServerSocket对象的accept()方法。

而创建一个Socket对象用于与服务器建立连接,使用指定的端口号使得服务器在捕获到客户端的请求时,根据端口号来完成指定的服务,Socket对象创建成功后,就可以在客户机与服务器之间建立一个连接,并通过这个连接在两个端口之间传送数据。

2.3Java异常处理机制

异常是指应用程序在运行过程中发生的不正常情况,或发生错误。

任何用计算机程序设计语言编写的程序,在运行过程中都不可避免的可能出现各种各样的异常,而程序运行中的异常可以预料但是不可避免,所以我们有必要运用一个异常处理的机制来处理这些有可能出现的异常情况[3]。

异常处理的方式有两种:

第一种方式是使用try……catch……finally结构对异常进行捕获和处理;地二种方式是通过throws和throw抛出异常,本设计中使用的是前者。

try……catch……finally异常处理方式的基本结构为:

try{

}catch(){}

finally{}

其中:

try{}:

将有可能出现异常的代码块括起来,预处理。

程序运行中,如果该块内的代码没有出现任何异常,将正常执行,后面的各catch块不起任何作用;如果该块内的代码出现了异常,系统将终止Try块代码的执行,自动跳转到所发生的异常类对应的catch块中,执行该块代码。

catch(){}:

出现异常,捕捉处理。

一个try块可以对应多个catch块,用于对多个异常进行捕获。

如果要捕获的多个异常之间没有父子关系,各类catch块的顺序无关紧要,但如果他们之间有父子关系,应该将子类的catch放在父类的catch之前,即从小到大排列catch。

finally{}:

无论有没有异常,都会执行,当没有出现异常时,先执行try内代码,再执行finally代码;当出现异常执行完对应异常类的catch块后,再执行finally块。

一般情况用于资源(net,io)的回收。

2.4Java线程

每个java程序都有一个主线程,要实现多线程,必须在主线程中创建新的线程。

Java中,线程用Tread类及其子类的对象来表示。

每个线程都要经历新建、运行、中断和死亡四种状态。

线程的基本实现方法为:

1>构造线程new;2>启动线程Start();3>运行线程run(),因此我们可以得到一个Java线程的建立及运行的基本结构为:

newThread(){

publicvoidrun(){}

}.start()

多线程机制是Java语言的又一重要特征,使用多线程技术可以使系统同时运行多个执行体,这样可以加快程序的响应时间,提高计算机资源的利用率。

实现多线程有两个途径,一种是用Thread类的子类创建来实现,另一种是通过实现Runnable接口的类来实现。

在本设计中是用创建Thread类的子类来实现多线程客户端与服务器端的通信的。

当编写Thread类的子类时,可以在子类中重写父类的run方法,该方法中包含了线程的操作。

这样程序需要建立自己的线程时,值需要建立一个已定义好的Thread子类的实例就可以了。

当创建的线程调用start()方法开始运行时,run()方法将被自动进行[4]。

2.5流

Java的输入/输出是以流的方式来处理的,流是在计算机输入、输出操作中流动的数据序列。

输入流代表从外设流入计算机的数据序列,输出流代表从计算机流向外设的数据序列。

流式输入、输出的特点是数据的获取和发送均按数据序列进行,每一个数据都必须等待排在它前面的数据读入或送出之后才能被读写,每次操作处理的都是序列中剩余的未读写数据中的第一个,而不能随意选择输入输出的位置。

序列中的数据既可以是未经加工的原始二进制数据,也可以是按一定编码处理后符合某种格式规定的特点数据,如字符数据,所以Java中的流有位流(字节流)和字符流之分[5]。

本次课程设计中运用的是字符流,而要实现字符流的传输,其设计顺序为:

获得文件输入输出流;使用转换流将字节流转为字符流;包装;读写;输出流清除缓存;关闭流。

3设计步骤

本次课程设计进行Web服务器的设计与实现,其步骤分为两大步,先要进行用户图形界面的设计与实现,由于它不是本次设计报告的侧重点,故在以下的步骤中只会稍加说明。

而本文的重点在于说明Web服务器I/O端口的实现,即Web服务器是如何实现与客户端(浏览器)的连接与数据传输的,故在下面会详细的说明。

3.1设计流程图

通过分析设计任务,本次课程设计的大致流程如图3.1所示

图3.1Web服务器设计流程图

3.2创建用户界面

首先,创建一个顶级的容器组件,一般是继承框架(Frame)的应用程序主窗口,它包含边框、标题栏、控制菜单和内容面板的容器,以下程序段主要是将组件声明并且实例化。

publicclassWebServerFrameextendsJFrameimplementsActionListener

{priv

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

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

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