介绍Servlet容器、Tomcat和Servlet之前,先了解为什么要有这些?从历史角度来看可以更好理解这些内容。
早期的时候,浏览器只能看到静态页面,静态页面的资源来自于web服务器,此时web服务器只是提供静态资源。随着人们需求增加,浏览器端用户要进行交互以及增加浏览器的显示的动态性,web服务器上增加了一个接口或者说接口规范即CGI(Common Gateway Interface),这样web服务器可以调用接口的实现,以便达到各种交互和动态性的目的。每当web服务器接到一个请求时,都会启动一个进程来调用接口的实现。例如:当你在浏览器网页上输入用户名密码时,点击提交,web服务器无法给你提示对还是错,只能没有任何反应。但有了 CGI后,web服务器把这个自己不能实现的功能交给了CGI实现,CGI实现后并将结果以HTML静态的方式,返回给web服务器,web服务器将此内容转发给浏览器。
好了,明白了历史,现在看看servlet是干什么用的。sun说了,我java是服务器语言,若按照这样下去,别的都可以使用了。我优势在哪,sun奋发图强,开发了一套自己的CGI。即当web服务器被连接时,调用的是sun提供的接口规范。这套接口规范就是servlet(Servlet是Server(服务器) Applet(小应用程序))。
那现在有个疑问,sun只是提供了接口,web服务器怎么来这个接口呢,这涉及到三种连的方式,我先将一种,即web服务器中包含了servlet引擎,当客户连接web服务器时,web服务器以线程的方式调用了一个servlet引擎,引擎相当于这个类里面有个main入口函数,servlet引擎根据请求的类型选择适当的servlet,此时的servlet是按照sun提供的接口规范实现的类,这个类只是集成了接口,而没有入口函数。servlet引擎选择好servlet类后,实例化来,并根据运行这些接口,init接口是实例初始化,destroy是实例销毁,service是具体实现功能的接口。上面只是说了servlet比cgi有一个优点就是线程,另外一个优点就是servlet实现一次可以方便跨平台移植,但CGI是跟平台关联度很强,无法实现轻松移植的。
好了上面讲了servlet容器和servlet,现在说说Tomcat,因为Tomcat实现的是servlet引擎的功能,所以,我们把Tomcat称为servlet引擎,有时也称为servlet容器。上面只是说了什么是Servlet容器、Tomcat和Servlet,以及为什么要有他们。自己菜鸟一个,有些理解不对的欢迎指正。后续会继续写web.xml,server.xml等等内容,敬请期待。。。