Tomcat的简单工作原理

Tomcat是开源的实现了部分Java EE规范的Java Web应用服务器。除了J2EE,还有其他技术也通过容器来实现,比如:EJB,Java Mail,JPA,JTA,JMS。

值得注意的是,目前经常接触的java容器,tomcat和jetty只是实现了J2EE的部分规范,比如Servlet和JSP。像XML,JMS,JTA,JTS,JAF,JDBC,JNDI,EJB,RMI,CORBA等其他规范会在Jboss,Glassfish等新兴容器中首先实现。所以像Glassfish这种开源的的容器,是研究Java EE最新技术的第一选择。

下面针对Tomcat支持的Java EE的规范做个简单的介绍:
Servlet:扩展了Web服务器功能的小型的Java程序。
JSP:在HTML代码中嵌入JAVA代码,服务器在接收到客户端的请求后对JAVA代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

Servlet容器

从tomcat的配置文件中可以看出,Servlet容器由Server,Service组成,其中Service又包含了很多的组件。

值得注意的是tomcat中conf路径中的server.xml体现的Server就是指的Tomcat服务器,负责管理各个Service,同时监听shutdown钩子。

Service就是Tomcat封装的支持WEB服务的组件,它包含许多的组件,其中有Connector和Container这两个重要组件,和Loader(类加载器),Realm(权限管理),JMX(提供远程监控tomcat的功能),Jasper(JSP解析引擎),Pipeline(请求的管道),Naming(即JNDI命名服务)等组件。

Container组件
Container由Engine(Servlet的主容器),Host(虚拟主机,负责部署web应用和Context的创建),Context(负责配置解析,管理Web资源),Wrapper(也就是每个Servlet的封装)组成,Engine又由多个Host组成,一个Host包含多个Wrapper。

Servlet的生命周期

  • 初始化调用init()方法:当请求到达Server,会被映射到相对应的Servlet,如果不存在对应的Servlet实例,则加载和实例化,此时调用init()方法
  • service()即是主方法,提供请求与返回
  • 销毁方法destory():当Server不再需要Servlet时,Server调用Servlet的destory()方法。

JSP规范

JSP引擎的工作流程

  • servlet容器编译servlet源文件,生成相应的类
  • 加载与JSP对应的servlet类,创建实例,并调用它的初始化方法,对应_jspInit()
  • 执行servlet实例的服务方法,对应_jspService()
  • 销毁servlet实例的销毁方法,销毁servlet实例,对应_jspDestory()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转自陈明乾的博客,可能有一定更新。 转原文声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、...
    C86guli阅读 4,722评论 6 72
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 0 系列目录# WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 本...
    七寸知架构阅读 14,056评论 22 190
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,366评论 11 349
  • 一. Java基础部分.................................................
    wy_sure阅读 3,835评论 0 11