xiaobaoqiu Blog

Think More, Code Less

Tomcat简介

最近会重新看一下Tomcat的源代码,整理一些东西,包括但不限于:

1.Tomcat架构
2.Tomcat启动过程
3.请求在Tomcat中的流转
4.Tomcat目录结构与配置

这里会首先简单介绍一些Tomcat的知识。后面会逐渐详细介绍。

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。

由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。而进来因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

官方网站:http://tomcat.apache.org/

Tomcat wiki:http://wiki.apache.org/tomcat/FrontPage

1.JSP和Servlet

Jsp(JavaServer Page)是在普通Html中嵌入了Java代码的一个脚本,在这一点上,它与其它的脚本语言(如Php)一样,但它与其它语言不同的是:其它脚本语言由服务器直接解释这个脚本,而Jsp则由Jsp容器(如Tomcat)首先将其转化为Servlet,然后再调用Javac将Servlet编译为Class文件。

Servlet其实是一个特殊的Java类,Servlet类一般从HttpServlet类继承而来,在这个类中至少要实现doGet或者doPost函数,在这两个函数中处理来自客户的请求,然后将结果返回。

2.Servlet容器

负责处理客户请求、把请求传送给Servlet并把结果返回给客户。不同程序的容器实际实现可能有所变化,但容器与Servlet之间的接口是由Servlet API定义好的,这个接口定义了Servlet容器在Servlet上要调用的方法及传递给Servlet的对象类。

3.Servlet生命周期

1.Servlet容器创建Servlet的一个实例
2.容器调用该实例的init()方法
3.如果容器对该Servlet有请求,则调用此实例的service()方法
4.容器在销毁本实例前调用它的destroy()方法
5.销毁并标记该实例以供作为垃圾收集

4.Tomcat简介

Tomcat中的Servlet容器称之为Catalina。

Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。

在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,你可以在远程通过Web部署和撤销应用。

5.Tomcat各个版本

http://wiki.apache.org/tomcat/TomcatVersions

6.参考:

http://zh.wikipedia.org/wiki/Apache_Tomcat

http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/

http://gearever.iteye.com/category/223001