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容器组件。

    图五

  • 相关阅读:
    Java利用Base64编码和解码图片文件
    SQL查询结果列拼接成逗号分隔的字符串:group_concat
    两个正则表达式:匹配固定电话号码,匹配手机号码
    IDEA导入Junit jar包,在JavaSE的Module中使用Junit测试
    如何正确遍历删除List中的元素(普通for循环、增强for循环、迭代器iterator、removeIf+方法引用)
    Java Springboot 根据图片链接生成图片下载链接 及 多个图片打包zip下载链接
    fastjson List<> 转Json , Json 转List<>
    PHP结合memcacheq消息队列解决并发问题
    Redis与Memcached的区别
    yii2 中excel表导出
  • 原文地址:https://www.cnblogs.com/jeacebolgs/p/6580428.html
Copyright © 2011-2022 走看看