javaweb--Tomcat简介

  • 1.Tomcat概述
  • 2.Tomcat作为Servlet容器的基本功能
  • 3.Tomcat的组成结构
  • 4.Tomcat的工作模式

本文主要内容为Tomcat简介


1.Tomcat概述

Tomcat是一个优秀的servlet容器。Tomcat除了能够充当运行servlet的容器,还提供了作为Web服务器的一些实用功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀。

2.Tomcat作为Servlet容器的基本功能

Servlet,顾名思义,是一种运行在服务器上的小插件。Servlet 最常见的用途是扩展Web 服务器的功能,它可作为非常安全的、可移植的、易于使用的 CGI替代品。

Servlet 具有以下特点∶
(1)提供了可被服务器动态加载并执行的程序代码,为来自客户的请求提供相应服务。
(2)Servlet 完全用 Java 语言编写,因此要求运行 Servlet 的服务器必须支持 Java语言。
(3)Servlet 完全在服务器端运行,因此它的运行不依赖于浏览器。不管浏览器是否支持Java 语言,都能请求访问服务器端的 Servlet。

如图所示,Tomcat 作为运行 Servlet 的容器,其基本功能是负责接收和解析来自客户的请求,同时把客户的请求传送给相应的 Servlet,并把 Servlet 的响应结果返回给客户。

Servlet 规范规定,Servlet 容器响应客户请求访问特定 Servlet 的流程如下∶
(1)客户发出要求访问特定 Servlet 的请求。
(2)Servlet容器接收到客户请求,对其解析。
(3)Servlet容器创建一个 ServletRequest 对象,在 ServletRequest 对象中包含了客户请求信息及其他关于客户的信息,如请求头、请求正文,以及客户机的IP地址等。
(4)Servlet容器创建一个 ServletResponse 对象。
(5)Servlet 容器调用客户所请求的 Servlet 的 service()服务方法,并且把ServletRequest 对象和 ServletResponse 对象作为参数传给该服务方法。
(6)Servlet 从 ServletRequest 对象中可获取客户的请求信息。
(7)Servlet 利用 ServletResponse 对象来生成响应结果。
(8)Servlet 容器把 Servlet 生成的响应结果发送给客户。

3.Tomcat的组成结构

Tomcat本身由一系列可配置的组件构成,其核心组件是servlet容器组件,它是所有其他Tomcat组件的顶层容器。每个Tomcat组件在server.xml文件中对应一种配置元素,以下代码以XML的形式展示了各种Tomcat组件之间的关系

<Server><Service><Connector/><Engine><Host><Context></Context></Host></Engine></Service>
</Server>

在以上XML 代码中,每个元素都代表一种Tomcat组件,这些元素可分为以下4类。

(1)顶层类元素∶包括<Server>元素和<Service>元素,它们位于整个配置文件的
顶层。
(2)连接器类元素∶为<Connector>元素,代表介于客户与服务器之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应结果返回给客户。
(3)容器类元素∶代表处理客户请求并生成响应结果的组件,有4种容器类元素,分别为<Engine>、<Host>、<Context >和<Cluster>元素。Engine 组件为特定的Service 组件处理所有客户请求,Host组件为特定的虚拟主机处理所有客户请求,Context 组件为特定的Web 应用处理所有客户请求。Cluster 组件负责为Tomcat 集群系统进行会话复制、Context 组件的属性的复制,以及集群范围内WAR文件的发布。
(4)嵌套类元素∶代表可以嵌入到容器中的组件,如<Valve>元素和<Realm>元素等,这些元素的作用将在后面的章节作介绍。

下面,再对一些基本的 Tomcat 元素进行介绍:

<Server>元素∶代表整个 Servlet 容器组件,是 Tomcat 的顶层元素。在<Server>元素中可包含一个或多个<Service>元素。
<Service>元素∶包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享同一个<Engine>元素。
<Connector>元素∶代表和客户程序实际交互的组件,负责接收客户请求,以及向客户返回响应结果。
<Engine>元素∶每个<Service>元素只能包含一个<Engine>元素。<Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求。
<Host>元素∶在一个<Engine>元素中可以包含多个<Host>元素。每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web 应用。
<Context>元素∶使用最频繁的元素。每个<Context元素代表了运行在虚拟主机上的单个web应用。一个<Host>元素中可以包含多个<Context>元素。

Tomcat 各个组件之间的嵌套关系如图所示。

图表明,Connector组件负责接收客户的请求并向客户返回响应结果;在同一个Service组件中,多个Connector组件共享同一个Engine组件;在同一个Engine组件中可以包含多个Host 组件;在同一个Host 组件中可以包含多个Context组件。

当 Tomcat 安装好以后,在它的 server.xml 配置文件中已经配置了<Server>、<Service>、<Connector>、<Engine>和<Host>等组件∶
<Server port="8005" shutdon="SHUTDOMN"><service name="Catalina-><Connectorport="8080"protocol="HTTP/1.1"connectionrimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3"redirectPort=·8443:/><Engine name=*Catalina" dofaultHost="1ocalhoet"><Host namo-"1ocalhost" appBase-"webapps"unpackWARs="true" autoDeploy="truexmlValidation="false xmlNamespaceAware-"false"></Host></Engine></Service>
</Server>

从以上代码可以看出,Tomcat 自带了一个名为"Catalina"的Engine组件,它的默认虚拟主机为 localhost。

4.Tomcat的工作模式

Tomcat 作为Servlet容器,有以下3种工作模式。
(1)独立的 Servlet容器
Tomcat 作为独立的 Web 服务器来单独运行,Servlet 容器组件作为 Web 服务器中的一部分而存在,这是 Tomcat 的默认工作模式。

在这种模式下,Tomcat 是一个独立运行的 Java程序。和运行其他 Java 程序一样,运行Tomcat 需要启动一个Java虚拟机进程,由该进程来运行 Tomcat。
(2)其他 Web 服务器进程内的Servlet 容器
在这种模式下,Tomcat 分为 Web 服务器插件和 Servlet 容器组件两部分。

如图所示,Web 服务器插件在其他 Web 服务器进程的内部地址空间启动一个Java 虚拟机,Servlet 容器组件在此 Java 虚拟机中运行。如有客户端发出调用 Servlet 的请求,Web 服务器插件获得对此请求的控制并将它转发(使用JNI通信机制)给 Servlet 容器组件。
(3)其他Web 服务器进程外的 Servlet 容器
在这种模式下,Tomcat 分为 Web 服务器插件和 Servlet 容器组件两部分。

如图所示,Web 服务器插件在其他 Web 服务器的外部地址空间启动一个Java 虚拟机进程,Servlet 容器组件在此 Java 虚拟机中运行。如有客户端发出调用 Servlet 的请求,Web 服务器插件获得对此请求的控制并将它转发(采用IPC通信机制)给 Servlet 容器组件。
进程外 Servlet 容器对客户请求的响应速度不如进程内 Servlet容器,但进程外容器具有更好的伸缩性和稳定性。


明天会更好

java web--Tomcat简介相关推荐

  1. Java Web Start简介

    最近由于工作关系,老大嘱咐我看一下Java Web Start.以前安装JDK时,会在"开始"菜单加一个快捷菜单"Java Web Start",也不知是做什么 ...

  2. java web tomcat 实例_Java Web应用开发实例

    [1.GIS的概念 1.1什么是gis 地理信息系统 (GIS, Geographic Information System) 是一种基于计算机的工具,它可以对在地球上存在的东西和发生的事件进行成图和 ...

  3. Java web Tomcat Server总结

    新建服务 Server-------New---------Server------Apache------Tomcat v8.0 Server-------Next-----Browse(Tomca ...

  4. 常用的Java Web框架简介

    Web框架是人们在使用某种语言编写Web应用服务端时关于架构的最佳实践. 有些Web框架是从实际的Web项目抽取出来的,也就是说,做一个具体的应用项目时,采取的架构比较理想,就把这部分和领域无关,而仅 ...

  5. Java Web框架简介

    Java Web,是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和web客户端两部分.Java在客户端的应用有java applet不过现在使用的很少,Java在服务器 ...

  6. Java Web——JavaBean简介

    基本概念 JavaBean: JavaBean是一种可重用的Java组件,它可以被Applet.Servlet.SP等Java应用程序调用.也可以可视化地被Java开发工具使用.它包含属性(Prope ...

  7. 贯通Java Web开发三剑客

    2019独角兽企业重金招聘Python工程师标准>>> 贯通Java Web开发三剑客 内容简介 本书分为六篇共19章,包括基础知识.Eclipse工具的介绍.Tomcat工具以及S ...

  8. java web开发实战经典 源码_李兴华 java_web开发实战经典 源码 完整版收集共享

    李兴华 java_web开发实战经典 源码 完整版收集共享 01f8a7  在  2018-11-07 20:41:33  上传  10.92 MB 第1章 JAVA WEB开发简介 1.1.WEB发 ...

  9. Java Web开发实战经典 李兴华版 读书笔记(一)

    有的时候总感觉读书没有效率,或是记不住,或是不能专注.所以,把读的书都做一个笔记.贴上来.方便日后回顾. 本人java后端开发,大概算个中级程序员.所以笔记中的难易程度都是根据我自身水平的判断. 看完 ...

  10. 名师讲坛——Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)

    [书名]<名师讲坛--Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax)> [作者]李兴华.王月清 [ISBN]9787302231585 ­}:YKf: ...

最新文章

  1. linux 安装tinyxml,使用TinyXml
  2. python findall函数_Ramp;Python Data Science系列:数据处理(11)Python正则表达式re模块(三)...
  3. with管理文件操作
  4. python 计时_Python time clock()方法
  5. python open函数_精选2个小例子,带你快速入门Python文件处理
  6. 张泉灵:时代抛弃你时,连一声再见都不会说
  7. C#LeetCode刷题之#110-平衡二叉树(Balanced Binary Tree)
  8. android 技能标签功能_android专业技能总结.doc
  9. ie6识别important问题
  10. bzoj 1124: [POI2008]枪战Maf(贪心)
  11. 剑指offer——面试题58:二叉树的下一个结点
  12. windows phone开发环境搭建
  13. java aop注解日志记录_springMVC自定义注解,用AOP来实现日志记录的方法
  14. 【C语言】17-预处理指令3-文件包含
  15. 【计算机组成原理】寄存器的本质——锁存器
  16. minecraft有自带服务器吗,从无到有:一步一步开设Spigot Minecraft服务器
  17. ZoomIt使用方法
  18. TypeScript简记
  19. R语言简单应用掷骰子游戏
  20. linux快捷键锁定屏幕,天天Linux-Ctrl+S快捷键锁定屏幕的问题

热门文章

  1. VIVADO 6.axi_bram的使用
  2. 安卓逆向之APP抓包
  3. JavaWeb之MVC
  4. 冯诺依曼机器的并发—带着脚镣跳舞
  5. vue中使用动态添加路由(router.addRoutes)加载权限侧边栏的两种方式
  6. 韩信点兵,,三人余 五人余 七人余
  7. 理工学范c语言答案,答案2016年秋季《C语言程序设计》北京理工大学
  8. 通过POI操作Excel的导入导出
  9. 云消费机通讯协议 附Java、PHP、Python、C# 、.Net、VB、Delphi、VFP、Android示例源码
  10. Go语言结构体(struct)