2019独角兽企业重金招聘Python工程师标准>>>

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

自己动手编写tomcat服务器(三)相关推荐

  1. 在MyEclipse中配置Tomcat服务器

    郁闷!为了在MyEclipse配置Tomcat 服务器,竟然弄了我几乎一个上午,也没弄成功,最后才注意到本该早注意到Tomcat 5.x还有个JDK这个东东,才成功了.一上午辛辛苦苦也没解决就是因为没 ...

  2. 安卓APP注册登录+Tomcat服务器搭建+MySQL数据库建立+加密传输+servlet后端内容编写及部署到Tomcat服务器

    认真学习安卓也有三四个月了,现在记录一下关于用户的各种操作. 1.安卓APP的实现: 先看一下展示动图吧! 首先是登录界面的xml---------activity_mian.xml <?xml ...

  3. JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下: 范例:将JavaWebDemoProject这个Ja ...

  4. Maven(三):将web项目的war包热部署到远程Tomcat服务器

    相关阅读: Maven(一):安装与环境配置.使用Maven搭建web项目 Maven(二):常用命令.依赖管理 Maven(三):将web项目的war包热部署到远程Tomcat服务器 Maven(四 ...

  5. JavaWeb学习总结(三):Tomcat服务器学习和使用(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下: 范例:将JavaWebDemoProject这个Ja ...

  6. 502无法解析服务器标头_编写下载服务器。 第三部分:标头:内容长度和范围...

    502无法解析服务器标头 这次,我们将探索更多HTTP请求和响应标头,以改善下载服务器的实现: Content-length和Range . 前者表示下载量很大,后者允许部分下载文件,或者从我们开始的 ...

  7. 编写下载服务器。 第三部分:标头:内容长度和范围

    这次,我们将探索更多的HTTP请求和响应标头,以改善下载服务器的实现: Content-length和Range . 前者表示下载量很大,后者允许部分下载文件或在我们开始时失败后继续下载. Conte ...

  8. 【通告更新】Apache Tomcat服务器文件包含漏洞安全风险通告第三次更新

    近日,奇安信CERT监测到CNVD发布了漏洞公告,对应CNVD漏洞编号:CNVD-2020-10487.CVE漏洞编号:CVE-2020-1938.CNVD漏洞公告称Apache Tomcat服务器存 ...

  9. 自己动手写Tomcat

    今天看到有人写了个简单的tomcat,让我想起多年以前自己也写了个demo,兴奋了好意振.贴出来分享下.有些简陋...   自定义服务器及浏览器.rar 转: 最近研究一方socket编程,由于想动手 ...

最新文章

  1. windows时间同步命令
  2. Java的知识点33——JDBC
  3. BZOJ-1082-[SCOI2005]栅栏(二分+dfs判定)
  4. RabbitMQ的TTL+死信队列 看完这篇包会!!!
  5. Ubuntu 12.04 图形界面问题解决 开机死机
  6. 《非暴力沟通》读书笔记
  7. 【转载保存】java四种线程池的使用
  8. WORD2010每次启动都要配置
  9. log4net 不生成日志文件的解决办法
  10. Linux内核部件分析 设备驱动模型的基石kobject
  11. 一个门外汉的产品设计漫谈(转)
  12. python数据存储到access_Python操作Access数据库基本步骤分析
  13. 1. 无穷维空间的测度论-Wiener测度(二)
  14. 计算机报名照片像素大小,证件照尺寸怎么修改-三种方法搞定证件照要求,让你不用再为图像分辨率和大小发愁!...
  15. 2022凉茶市场份额
  16. 面试题16:不含重复字符的最长子字符串(Java版)
  17. 【前端春招】前端春招实习+秋招心路历程
  18. VB:SysInfo控件
  19. 网络 :基础——路由器、交换机
  20. blackjack java gui_第五人格 BlackJack玩法规则与测评

热门文章

  1. oracle函数,oracle编写函数
  2. Mac OS X 下连接CMCC无法弹出登陆页面问题
  3. 15 Small-Space Tricks We're Stealing from Real Tiny Apartments
  4. 微信小程序小结02-- 完整的demo
  5. 微服务架构与Docker容器之间关系
  6. vmware workstation使用方法
  7. HTTP Slow Attack测试工具SlowHTTPTest
  8. 将字符串分解成一个表(多行、多列)表值函数[ StrSplit_Tab]
  9. Aspose.Cells设置单元格格式
  10. 驱动阿里云的高性能网络引擎- 飞天洛神