设为首页 收藏本站
查看: 354|回复: 0

[经验分享] how tomcat works chinese 学习系列第三章

[复制链接]

尚未签到

发表于 2017-2-6 10:59:05 | 显示全部楼层 |阅读模式
  本来第三章, 在28号已经看完了, 但是觉的看的有点晕, 理解的不够,
  就决定在看一遍, 呵呵, 坚持啊, 内容越来越多了,网上说tomcat源码有20-30万行代码
  我不能完全看完, 但是其中的机制和核心模块还是要了解的, 坚持看下去。。。
  第三章-- 连接器
  书中继续改造第二章的代码和继续扩展功能, 并且功能开始划分模块
  connector 连接器
  连接器和它的支撑类(HttpConnector和HttpProcessor)。
指代HTTP请求的类(HttpRequest)和它的辅助类。
指代HTTP响应的类(HttpResponse)和它的辅助类。
Facade类(HttpRequestFacade和HttpResponseFacade)。
Constant类
  startup 启动应用
  Bootstrap
  core
  由这两个类组成:  ServletProcessor和StaticResourceProcessor
  流程是: 
  1.启动程序 Bootstrap创建一个HttpConnector对象,侦听http请求,然后HttpConnector对象获取socket套接字对 象
  2. 创建一个HttpProcessor对象,调用它的process方法 请求通过SocketInputStream获取输入流和socket的outputStream输出流创建Http的Request对象和Respon对象。
  3. 获取请求行和请求头, 初始化到httpRequest,HttpResponse属性, 便于客户端调用
  4.判断uri资源,找到处理servlet处理
  5. 在异常处理时, 通过配置文件放到异常里面,StringManager类来获取指定包的配置文件的异常key,返回一个value给调用者。
  所用使用的类的列表如下:
  core
  ServletProcessor              动态资源请求处理servlet
  StaticResourceProcessor  静态资源请求处理servlet
  connector
  RequestStream
  ResponseStream
  ResponseWriter
  Constants                       静态公共final公共资源
  HttpConnector                连接器提供入口给容器启动,线程类, 监听请求
  HttpHeader                     在解析请求头时,对象封装类
  HttpProcessor                 有点像控制器,调用资源封装请求对象和响应对象, 调用处理servlet处理
  HttpRequest                    请求对象, 实现httpServletRequest接口
  HttpRequestFacade         跟上面一个实现相同接口
  HttpRequestLine             请求行封装类
  HttpResponse                 响应对象,底层都是通过流实现的, 但是响应给客户端通过这个类实现。
  HttpResponseFacade      和上面一样, 实现HttpServletResponse接口
  SocketInputStream        有两个重要的方法
  readRequestLine和readHeader。readRequestLine返回一个HTTP请求的第一行
  readHeader的返回值是一个HttpHeader对象
  LocalStrings.properties  异常key-value 文件。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-338237-1-1.html 上篇帖子: 获取javaweb项目在Tomcat发布后的原始路径 下篇帖子: 项目从tomcat向weblogic迁移遇到的一些问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表