您的位置:首页 > 运维架构 > Tomcat

深入剖析tomcat读书笔记——连接器

2016-04-19 10:56 323 查看
最近阅读了深入剖析tomcat 这本书,顺便做读书笔记方便自己日后复习,同时也可以供他人参考。以下内容是第三章的内容,主要讲述简化了连接器:

这里主要涉及到以下几个类

HttpConnector           负责创建一个服务器套接字,套接字会等待传入的Http请求

HttpProcessor             负责生产HttpRequest和HttpResponse
HttpRequest                 表示Http的请求对象

HttpRequestFacade     http请求对象的门面类

HttpResponse              http的响应类

HttpResponseFacade  http响应的门面类

HttpRequest类实现了HttpServletRequest,并被作为参数传递给servlet实例的service方法,因此需要设置HttpRequest的成员变量,这些值包括:URI,查询字符串,参数,Cookie和其他一些请求头信息。

SocketInputStream是InputStream的封装,这个类提供了两个重要的方法分别是readRequestLine()和readHeader()方法,readRequestLine方法返回了HTTP请求的第一行的内容,包含了URI,请求方法和HTTP的版本信息这些内容。readHeader方法会返回一个名/值对,所以应该重复的调用这个方法直到把所有的请求头信息读完。这两个方法分别返回HttpRequestLine实例和HttpHeader对象。SocketInputStream就是负责解析请求的请求行、和请求头这些信息,然后将这些请求信息填充到HttpRequest中。

为此又专门有两个类,分别是HttpRequestLine和HttpHeader。请求行分为三个部分,1.方法如get或者post等,2.URI,但是URI中可能会含有一个查询字符串3.协议。
 HttpHeader则相当于一个key/value对,为了提高效率内部是用字符数组来表示的。通过多次调用readHeader()方法可以将请求头的所有的key/value 对添加到HttpRequest中。其实也就是从socket中取出InputStream进行封装,目的是为了解析请求信息生成HttpRequest,中间的封装就是SocketInputStream。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  源码阅读 tomcat