自己动手编写tomcat服务器(三)

本文详细介绍了Catalina的connector和container模块如何处理HTTP请求。connector接收并解析HTTP请求,而container负责创建HttpServletRequest和HttpServletResponse实例,将请求传递给servlet进行处理。文章还深入探讨了启动过程、HttpRequest和HttpResponse对象的创建以及静态资源和servlet处理器的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 Application


Starting 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();
  }
}

未完,到原网站看吧,这里写不下了

转载于:https://my.oschina.net/yolinfeng/blog/468953

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值