zoukankan      html  css  js  c++  java
  • Tomcat 简介

    Tomcat 是在SUN 公司的JSWDK(JavaServer Web DevelopmentKit ,是SUN公司推出的小型Servlet/JSP调试工具)的基础上发展起来的一个优秀的Servlet容器,Tomcat本身完全用java语言编写。

    Servlet是一种运行在服务器上的小插件,他所具有的的以下特点:

    1、提供了可被服务器加载并执行的程序代码,并服务于来自客户端的请求。

    2、Servlet服务器必须支持java。

    3、Servlet不依赖浏览器,是允许在服务器端,所以不管浏览器是否支持java,都能请求访问servlet。

    Tomcat做为Servlet的容器基本功能如图一

    图一

    Servlet 的规范规定Servlet不仅可以运行在基于HTTP协议的Web服务器上,还可以运行在基于其他应用协议的服务器上。不过,目前Servlet主要运行在Web服务器上,用来扩展Web服务器的功能。Servlet规范规定,Servlet容器响应客户请求访问特定的Servlet的流程如下:

    1、客户发出要求访问特定的Servlet的请求。

    2、Servlet 容器接收到客户请求并解析。

    3、Servlet 容器创建一个ServletRequest对象,在ServletRequest对象中包含了客户请求信息及其他关于客户的信息,如请求头,请求正文,以及客户机的IP地址等。

    4、Servlet容器创建一个ServletResponse对象

    5、Servlet 容器调用客户所请求的Servlet的service服务方法,并且把ServletRequst对象和ServletResponse对象做为参数传给该服务方法。

    6、Servlet从ServletRequest对象中可获取客户的请求信息。

    7、Servlet利用ServletResponse对象来生成响应结果。

    8、Servlet容器吧Servlet生成的响应结果发送给客户。

     Tomcat的组成如图二

    图二

    1、<Server> 元素:代表整个Servlet容器组件,是Tomcat的顶层元素。在<Server>元素中可以包含一个或者多个<Service>元素。

    2、<Service>元素:包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>原先共享一个<Engine>元素。

    3、<Connector>元素:代表和客户程序时间交互的组件,负责接收客户请求,以及想客户返回响应结果。

    4、<Engine>元素:每个<Service>只能有一个<Engine>元素。<Engine>元素处理在同一个<Service>中所有<Contector>元素接收到的客户请求。

    5、<Host>元素:在一个<Engine>元素中可以包含多个<Host>元素。每个<Host>元素定义了一个虚拟主机,他可以包含一个或多个Web应用。

    6、<Context>元素:使用最频繁的元素。每个<Context>元素代表了运行在虚拟主机上的单个Web应用。在一个<Host>元素中可以包含多个<Context>元素。

    Tomcat做为Servlet的容器,有以下三种工作模式

    1、做为独立的Servlet容器,如图三

    Tomcat作为独立的Web服务器来单独运行,Servlet容器组件做为Web服务器中的一部分二存在,这是Tomcat的默认工作模式。

     图三

     

    2、作为其他Web服务器进程内的Servlet容器。如图四

    在这种模式下,Tomcat分为Web服务器插件和Servlet容器组件两个部分,Web服务器组件获得用户请求,利用JNI通信机制给Servlet容器组件。JNI指是Java本地调用接口,通过这一接口,Java程序可以和采用其他语言编写的本地程序进行通信。

    图四

    3、其他Web服务器进程外的Servlet容器。如图五

    在这种模式下,Tomcat分为Web服务器组件和Servlet容器组件两部分。Web服务器获取用户请求,并通过IPC通信机制发送给Servlet容器组件。

    图五

  • 相关阅读:
    【故障处理】ORA-12162: TNS:net service name is incorrectly specified (转)
    android studio 编程中用到的快捷键
    java时间格式串
    android Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
    linux安装vmware
    x1c 2017 安装mint18的坑——grub2
    x1c2017 8G版 win linux的取舍纠结记录
    python的try finally (还真不简单)
    kafka+docker+python
    json文件不能有注释
  • 原文地址:https://www.cnblogs.com/jeacebolgs/p/6580428.html
Copyright © 2011-2022 走看看