【Tomcat源码阅读分享】—(2)Servlet源码解析

众所周知,Servlet的生命周期在容器里如下:


            图一 Servlet生命周期                                     

那我们主要从它的生命周期来分析源码。一般来说,我们开发Sevlet,只需继承HttpServlet这个类即可,其类关系图如下:


                                   图二 HttpServlet类关系图                                           

Servlet类为实现类提供了init(ServletConfig),service()和destroy()方法,并提供了获取servlet配置信息的方法。


                                      图三 Servlet接口                                            

ServletConfig类为servlet的配置信息,相当于配置在web.xml对应servlet的配置信息。

GenericServlet为一个抽象类,实现了init(ServletConfig)方法,初始化了ServletConfig,并调用了init()方法,在此类中,这个方法为空实现,可以在我们自定义的Servlet中重写该方法,同样地,destroy()方法也是如此。

在这个类中,service()方法并没有实现,而是继承下来了,让我们看下子类HttpServlet的service()方法。



在这个方法里,第一步会调用HttpServletRequest中的getMethod获取请求类型,根据各个类型进行转发调用该类的doXXX方法,如果Servlet没有重写对应的doXXX方法,会返回http.method_(post或者get)_not_supported这个错误信息。

那么,HttpServletRequest这个对象,容器是如何通过客户端发送的请求进行组装,如何传入到Servlet中,Servlet处理完成以后如何通过web.xml的配置打包成ServletResponse并返回的。这个便是我今后研究Tomcat源码的方向,今天暂且看到这里。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文包括: Servlet简介关于Servlet的一些类 Servlet生命周期 ServletConfig获得初...
    廖少少阅读 9,354评论 1 67
  • 0 系列目录# WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 本...
    七寸知架构阅读 14,754评论 22 190
  • 什么是Servlet Servlet的作用是为Java程序提供一个统一的web应用的规范,方便程序员统一的使用这种...
    Rick617阅读 13,765评论 2 48
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,468评论 11 349
  • 起风的日子, 花草树木都添加衣裳。 风大的时候, 房子都抱团取暖。 在那样的日子里, 你要保重身体健康。 我不知道...
    小剧在成长阅读 2,761评论 7 10