第一个对用户实现动态文本的机制是通用网关接口(CGI)。这给予可执行应用(通常由PERL或C语言编写,但并不必须如此)一个接口以使客户端在HTTP标准些接入。
CGI项目的URL看上如想这个虚拟的URL一样:
http://www.myserver/cgi-bin/MyExecutable?name=halberd%pass=halberd
URL的第一部分是系一名(在这个例子中时HTTP),接着是服务器名,在这与问好之间的是文件路径。
URL中的/cgi-bin/部分提醒服务器应该执行URL下面指定的CGI项目,在这个例子中时MyExecutable,在问号后面的部分被称为查询字符串,踏实的客户端可以向CGI项目发送消息。
CGI的几个缺点:
每一个引入的CGI请求都需要新建一个操作系统进程
其后这个进程会加载和运行一个CGI程序
为了支持网络协议和请求解码,必须进行单调枯燥地反复编程
这个时候Tomcat的出现,Servlet:java的服务器端在某些方面克服了这些,Servlet是具有明显形式的一部分逻辑,用java表示,他引用了动态产生文本或执行一些操作。
Servlet的主要优点:
为每一个请求新建一个操作系统进程的开销取消了,一个java虚拟机保持运行状态,并处理所有的请求。
JVM加载java类时以处理引入的请求,如果同一个处理呗一个以上的请求提出,已被加载的类就可以用处理它,对于第一个请求以外的所有请求,这都减少了类的加载的开销。
在静态协议例如HTTP上进行状态管理的问题得以解决
解决联网协议和对引入请求解码的代码可以被所有进行处理的java类分享