传统的Web服务器模式开发
Web -World Wide Web万维网,最初只有有限的静态Web页面HTML静态页面,编写静态内容生成页面,然后提供链接,记得9几年玩的不亦乐乎的东西。
1991年8月6日,Tim Berners Lee在alt.hypertext新闻组贴出了一份关于World Wide Web的简单摘要,标志了Web页面在Internet上的首次登场。最早Web主要被一帮科学家们用来共享和传递信息,全世界的Web服务器也就几十台。第一个Web浏览器是Berners Lee在NeXT机器上实现,也只能跑在NeXT机器上,苹果和乔布斯的粉丝对NeXT的历史肯定耳熟能详。真正使得Web开始流行起来的是Mosaic浏览器,这便是曾经大名鼎鼎的Netscape Navigator的前身。Berners Lee在1993年建立了万维网联盟(World Wide Web Consortium,W3C),负责Web相关标准的制定。浏览器的普及和W3C的推动,使得Web上可以访问的资源逐渐丰富起来。这个时候Web的主要功能就是浏览器向服务器请求静态HTML信息。95年的时候马云在美国看到了互联网,更准确的说他其实看到的就是Web,阿里早先做的黄页也就是把企业信息通过进行HTML展示的Web应用。
- 不能提供及时的信息,页面上提供的都是静态不变的信息。
- 当需要添加新的信息时,必须重新编写HTML文件。
- 由于HTML页面是静态的,所以不能为不同的用户提供不同的信息。
CGI动态页面的生成
CGI-Common Gateway Interface 公共网关接口。
CGI定义了Web服务器与外部应用程序之间的通信接口标准,因此Web服务器可以通过CGI执行外部程序,让外部程序根据Web请求内容生成动态的内容。Perl因为跨操作系统和易于修改的特性成为CGI的主要编写语言。当然,CGI可以用任何支持标准输入输出和环境变量的语言编写,比如Shell脚本,C/C++语言,只要符合接口标准即可。比如你用C语言编写CGI程序,你把希望返回的HTML内容通过printf输出就可以发送给Web服务器,进而返回给用户。
CGI程序运行在服务器端,可根据不同客户请求输出响应的HTML页面。
- 需要为每个请求启动一个操作CGI程序的系统进程。如果请求非常频繁,这将会带来很大的开销。
- 需要为每个请求加载和运行一个CGI程序,这也将带来很大的开销。
- 需要重复编写处理网络协议的代码以及进行编码,这些工作都是非常耗时的。
那个时候已经有了java,但是java编写CGI程序更加糟糕。执行一个java编写的CGI程序出了要启动一个系统进程,还要启动一个JVM然后才能JVM中执行CGI程序。那个年代硬件资源极其昂贵和低能,运行这些更加困难。为了解决这个问题Java推出了Servlet规范。