一.项目简介: " e3 \4 {7 S) n: a2 S9 B
JAVA说话是一种可移植的,简单的,健壮的嵌入式说话。而且对收集,数据库有很好的撑持,基于JAVA说话的这种特征可以十分轻易地成立一个小型INTERNET处事器。
4 b( `0 h, W3 C7 |' k7 `7 | 本项目中,作者用JAVA说话编写了一个WEB微型处事器,对简单的HTTP请求进行响应,并经由过程后端数据库对用户的发芽进行措置,年夜而动态地返回HTML页面。0 m+ |+ h$ o- n; f/ ~# x
二.项目实现: & S! Z( \' w. |) z1 U
(一)项目具体功能剖析与开发工具选择
# N! S" k0 F) Z# b1 n 可以操作一台较高设置装备摆设的小我台式机就可以实现社区内的小型处事器,搜罗网页浏览,基于高速局域网的视频下载和播放,按时新闻组发布轨范,邮件处事器等处事。3 E3 u- Q" o- h' @/ C2 X! T1 s
本软件现实上是一个HTTP和谈的处事器。HTTP(Hyper Text Transfer Protocol),是一个专门为Web处事器和Web浏览器之间交流数据而设计的收集和谈。它经由过程划定通用资本定位符(URLs)使客户端的浏览器与处事器的Web资本成立链接关系,年夜而奠基了用户对Internet透明访谒的基本。6 H& @/ t n/ r3 O
在本软件中经由过程传输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页面加倍令人入神。$ @0 z8 p/ l, V% K u( F+ w% z
CGI是通用网关接口(Common Gateway Interface)的简称,它是Web处事器与外部轨范之间的通信接口,处事器并不关心外部应用轨范是什媚暌癸言(如C、C++、Pascal、 Delphi或Perl)编写的,它只是负责领受用户输入的信息,并把CGI轨范所发生的结不美观--HTML文档或其他合适HTTP划定的文件回传给用户。事实上,CGI是动态Web页面建造的第一步,但因为CGI轨范实现斗劲坚苦,而且效率不高,它已经逐渐被新的手艺所庖代。
3 {: W0 g* a# q- ~1 P3 g1 N+ }3 O 网页浏览撑持的网页搜罗HTML,JAVASCRIPT,APPLET,VBSCRIPT等编写的网页,但不撑持PHP,ASP等处事器端动态轨范的网页。因为处事器的规模较小,所以处事器端动态轨范被集成进处事器中。但可以经由过程编写合适必然轨则的JAVA的CGI轨范实现处事器端的动态性,不外这种JAVA轨范的平安性很难保证。
. O( A' X& J" D& S! Y& E(二)处事器的实现 3 J" N0 }5 F% X4 T8 W- }
1. 措置毗连策略: , J C! Q1 M. Q7 s! a8 P2 [
对于每一个用户的毗连我们采纳了每次请求知足后,将用户与处事器的毗连断开,这时用户如不美观有其他的请求,则进入请求队列年夜头进行资本竞争。
1 W# q% `, D2 ~# s7 e) E 凡是网页中的每一个图形城市被算作是一个零丁的毗连,也就是说对于一个图形良多的网页基于本处事器的毗连策略将会进行多次请求,这样的益处是防止也述容量很年夜的网页独有收集资本。
9 l& ~2 T$ p6 f W, Z6 |2. 与数据库毗连
, ]. z# d) y( V* {" k 在与数据库的毗连中我们选用的后端数据库是微软的ACCESS数据库,因为本项目是面向小型社区的社区数据中心处事器,所以选用小型的数据库。因为JAVA的可移植性可以将处事器用在LINUX平台上,这时可以用本处事器供给的数据库设置装备摆设轨范毗连到MySql等基于LINUX的小型数据库。# k% _8 A) `/ p2 I- L; o
5 a1 A) \7 ~; S. v. z6 @
我们应用JDBC完成与数据库的毗连。Java的一项超卓能力是构建与平台无关的客户机/处事器数据库应用。在Java 1.1中,经由过程Java数据库毗连(JDBC)实现了与各家公司之间的数据库的互连。数据库最首要的一个问题就是各家公司之间的规格年夜战。确实存在一种" 尺度"数据库说话,即"结构发芽说话"(SQL-92),但各公司为了暗示自己的分歧凡响对尺度都有一些细小的改动。所以凡是必需切当知道自己要和哪家数据库公司打交道,否则极易出问题,尽管存在所谓的"尺度"。JDBC是面向"与平台无关"设计的,所以在编程的时辰不必关心自己要使用的是什么数据库产物。和Java中的良多API一样,JDBC也做到了尽量的简化。我们发出的体例挪用对应于年夜数据库收集数据时想当然的做法:同数据库毗连,建树一个语句并执行发芽,然后措置结不美观集,无论与我们打交道的是哪家数据库厂商的产物。 |