第1章 认识Tomcat

1.1 什么是Web Server

今天来讨论Web对大多数人来说都不是多么陌生的概念,我们在电脑中打开浏览器,在地址栏中输入http://www.sohu.com,就能够看到搜狐公司提供给我们的网页,来思考一下在你的操作背后,计算机本身以及Internet为我们在做些什么事情。

首先是浏览器,经过Java部分编程的学习,你不应该对计算机里面的任何程序有所敬畏,那些程序都是和你一样的程序员编写出来的,理论上只要你愿意,花些时间你也可以编写出相似的程序!

那么,如果由你来编写一个浏览器,你会做些什么?我们能够想象,用户输入的http://www.sohu.com是一个网址,它对应了一个IP地址,通过网址得到一个IP地址,并不是一件多么难的事情,互联网上的DNS服务就可以提供这样的转换。作为一个程序员,得到一个IP地址后,会创建Socket对象和对方连接上,目的是为了得到一个特定的网页,我们常常能够在浏览器的地址栏中看到这样的网址:http://www.360buy.com/product/258313.html,意思是我要看京东网站上的258313.html这个文件的内容。这是由于一个网站上的网页文件太多了,所以还会有路径结构。

http://www.sohu.com这样的网址请求是个例外,你并没有指定要看哪个网页,通常网站会提供一个默认的网页,如果没有指定,就将这个默认的网页传送给你。无论是哪种形式,我们将浏览器中输入的地址称为URL。

我们不看这样的例外情况,来想一下,如果要看258313.html这个网页,是不是要通过Socket将这个请求传送到京东的网站服务器去呢。

京东的网站服务器一定是一台计算机,但是只有计算机是不够的,计算机上需要运行一个程序,我们能够理解,这个程序将是服务器端的Socket应用,里面有ServerSocket,这个程序将监听在一个端口,大家约定了提供Web服务的端口是80,当然也可以改变这个约定,那么在浏览器访问的时候,就要额外指定新的端口号,如果不这样做,就意味着浏览器访问的是80端口。

服务器的程序将接收到浏览器发出的请求,然后它用IO流到自己所管理的目录中找到这个258313.html文件,将这个文件的内容读到内存中,然后通过网络发送给你的浏览器,浏览器得到了这个文件的内容,将按照html的规则显示出来。这就是一次最简单的Web访问的过程,如图1-1所示。

图1-1

作为一个计算机的使用者,浏览器是一个非常常用的程序,有很多公司会把这样的程序做成产品,所以现在我们已经不需要来编写这样的程序了。

那么服务器程序在互联网世界中,是不是也是非常常见的程序呢,其实编写服务器程序更加有利可图,所以现在在市场上有很多服务器端的软件产品,这些产品被统称为Web Server。