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

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

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

  1. HttpConnector           负责创建一个服务器套接字,套接字会等待传入的Http请求
  2. HttpProcessor             负责生产HttpRequest和HttpResponse
  3. HttpRequest                 表示Http的请求对象
  4. HttpRequestFacade     http请求对象的门面类
  5. HttpResponse              http的响应类
  6. 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。
































































































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值