Catalina有两个主要的模块:connector和container,connector接收http请求,发送给container进行处理。container必须创建HttpServletRequest和HttpServletResponse的实例,然后传递给被调用的servlet的service方法。在这篇文章的应用中,connector解析HTTP请求头,并允许servlet获取headers, cookies, parameter names/values。
本篇的应用由三个模块组成:connector, startup, 和core.
startup模块仅包含一个类:BootStrap,它是应用的入口
connector模块分为5个类别:
connector 和它的支持(supporting )类(HttpConnector 和HttpProcessor )
代表HTTP 请求的类(HttpRequest )及 其支持类
代表HTTP 响应的类(HttpResponse )及其支持类
门面(Facade )类(HttpRequestFacade 和HttpResponseFacade )
Constant 类
core模块包含两个类: ServletProcessor and StaticResourceProcessor
在这章的应用中,监听HTTP请求的任务交给了HttpConnector类,创建http请求和响应的任务交给了HttpProcessor类。HttpRequest类代表一个请求,HttpRespons代表一个响应。HttpRequest必须实现javax.servlet.http.HttpServletRequest接口。一个HttpRequest对象将会被转换成(cast)HttpServletRequest的实例然后传递给被请求的servlet的service方法。因此,每个HttpRequest的实例必须拥有合适的成员,被分配给HttpRequest的值有:URI, query string, parameters, cookies and 其他的 headers
SocketInputStream类包含两个重要的方法:readRequestLine和readHeader。readRequestLine返回请求字符串的第一行,readHeader用来获取名值对。
本篇的应用包含如下的结构:
Starting the Application
The Connector Creating an HttpRequest Object Creating an HttpResponse Object Static resource processor and servlet processor Running the ApplicationStarting the Application
ex03.pyrmont.startup.Bootstrap类为起点类,源代码如下:
package ex03.pyrmont.startup;import ex03.pyrmont.connector.http.HttpConnector;public final class Bootstrap { public static void main(String[] args) { HttpConnector connector = new HttpConnector(); connector.start(); }}
未完,到原网站看吧,这里写不下了