一.项目简介:
java语言是一种可移植的,简单的,健壮的嵌入式语言。并且对网络,数据库有很好的支持,基于java语言的这种特性可以十分容易地建立一个小型internet服务器。
本项目中,作者用java语言编写了一个web微型服务器,对简单的http请求进行响应,并通过后端数据库对用户的查询进行处理,从而动态地返回html页面。
二.项目实现:
(一)项目具体功能分析与开发工具选择
可以利用一台较高配置的个人台式机就可以实现社区内的小型服务器,包括网页浏览,基于高速局域网的视频下载和播放,定时新闻组发布程序,邮件服务器等服务。
本软件实际上是一个http协议的服务器。http(hyper text transfer protocol),是一个专门为web服务器和web浏览器之间交换数据而设计的网络协议。它通过规定通用资源定位符(urls)使客户端的浏览器与服务器的web资源建立链接关系,从而奠定了用户对internet透明访问的基础。
在本软件中通过传输html文件使客户端可以实现网页浏览。html是www的通用标记语言,它用来创建web页面和控制web信息显示格式。html不是编程语言,而是一种描述语言。html2.0得到了ietf(internet engineering task force)的支持而成为internet国际标准。目前,html已经发展到3.0和4.0版,只是新版本的标准尚未完全统一,不同的商家对html2.0进行了一定的扩充,引入了更多新的功能。例如,netscape公司在html3.0中增加了页面底图(background images)和表(table)定义等标记,使得web页面更加引人入胜。
cgi是通用网关接口(common gateway interface)的简称,它是web服务器与外部程序之间的通信接口,服务器并不关心外部应用程序是什么语言(如c、c++、pascal、delphi或perl)编写的,它只是负责接收用户输入的信息,并把cgi程序所产生的结果--html文档或其他符合http规定的文件回传给用户。事实上,cgi是动态web页面制作的第一步,但由于cgi程序实现比较困难,而且效率不高,它已经逐渐被新的技术所取代。
网页浏览支持的网页包括html,javascript,applet,vbscript等编写的网页,但不支持php,asp等服务器端动态程序的网页。由于服务器的规模较小,所以服务器端动态程序被集成进服务器中。但可以通过编写符合一定规则的java的cgi程序实现服务器端的动态性,不过这种java程序的安全性很难保证。
(二)服务器的实现
1. 处理连接策略:
对于每一个用户的连接我们采取了每次请求满足后,将用户与服务器的连接断开,这时用户如果有其他的请求,则进入请求队列重新进行资源竞争。
通常网页中的每一个图形都会被看成是一个单独的连接,也就是说对于一个图形很多的网页基于本服务器的连接策略将会进行多次请求,这样的好处是防止一个容量很大的网页独占网络资源