TOMCAT学习笔记
(2011-10-03 17:03:26)2011年10月3日
1.TOMCAT总体来说由两部分组成:connector和container。
connector主要功能是:为每个接收到的HTTP请求(处理请求类:解析请求)建立request对象和response对象。然后,将处理过程交给container模块。container模块从connector模块中接收到request对象和response对象,并负责调用相应的servlet的服务方法。
container主要功能是:container模块从connector模块中接收到request对象和response对象,并负责调用相应的静态资源或者相应的servlet的服务方法。当然,上面只是对这个处理过程的简化描述。在处理过程中,container还要做很多其他的事。例如,在调用servlet的服务方法前,它必须载入该servlet,对用户身份进行认证(需要的话),更新该用户的session对象等。
2.简单的服务器:
一个简单的服务器最基本的功能就是接受用户的http请求和发回http响应。
一个HTTP请求包含以下三部分:
l
l
l
举例如下(注意三部分之间要有空行):
POST Accept: Accept-Language: Connection: Host: User-Agent: Content-Length: Content-Type: Accept-Encoding: lastName=Franks&firstName=Michael |
一个HTTP
l
l
l
举例如下:
HTTP/1.1 Server: Date: Content-Type: Last-Modified: Content-Length: <html> <head> <title>HTTP </head> <body> Welcome </body> </html> |
注意响应实体(entity)与响应头(header)之间有一个空白行(CRLF)。
程序可如下编三个类写
A.httpServer类
B.request类
C.response类
其中httpServer类带main方法,模拟了一个简单的服务器。在httpServer类里会等待客户端的连接请求(调用accept()方法)接到请求后将http请求掉用socket的方法,从socket里读出有用信息如uri等。然后将这些信息填充到request里,response类使用request的信息调用sendStaticResource()方法返回给客户端http应答。
3.较复杂的服务器
tomcat由两大模块组成:连接器(connector)和容器(container)
应用程序可分为3个模块:connector、startup、core。
startup模块仅包括一个StartUp类,负责启动应用程序。
connector模块的类可分为以下5个部分:
l
l
l
l
l
core模块包括ServletProcessor类和StaticResourceProcessor类。