zoukankan      html  css  js  c++  java
  • tomcat学习

    一、tomcat是什么?

      tomcat是JSP和Servlet容器,是一种轻量级应用服务器。

    二、tomcat的目录结构

      |---bin   :存放启动和关闭tomcat脚步

      |---conf :存放tomcat的各种配置文件(包括server.xml和web.xml等)

      |---lib    :存放tomcat运行需要的库文件jars

      |---logs :存放tomcat运行的日记文件

      |---src   :存放tomcat的源代码

      |---webapps :Tomcat的主要web发布目录(包括应用程序示例)

      |---work  :存放jsp编译后存放的class文件

      |---doc  :存放tomcat文档

    三、tomcat的组成

          

      1.Server:代表整个servlet容器

      2.Service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有connector获得的所有用户请求

      3.Connector:一个Connector将在某个指定的窗口上监听客户的请求,并将请求交给Engine处理,并从Engine获得回应并返回给客户端。

             Tomcat有两个典型的Connector,一个是监听来自browser的http请求,例如8080端口;一个是监听来自其他webserver的请求的,例如8009端口。

      4.Engine :Engine下可以配置多个虚拟主机Virtaul Host,每个主机都有一个域名,当Engine获得一个请求时它会把请求匹配到对应的虚拟主机上,并把请求交给   对应的虚拟主机处理。Engine有一个默认的主机,当请求不能匹配到任何一个主机的时候,就会把请求交给默认的主机处理。

      5.Host    :代表一个虚拟主机,每一个虚拟主机和一个网络域名Domain Name相匹配,每个虚拟主机下可以部署一个或多个webApp,每个webapp对应一个           Context,每个Context都有一个Context Path,当Host接受到一个请求是,把请求匹配到对应的Context Path,并把请求交给该Context来处理。

      6.Context :一个WebApp对应一个Context,一个Context由一个或多个servlet组成,Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml 和$Webapp/WEB-INF/web.xml载入servlet类。

    补充:

        关于第4点,对于“一个Engine下可以配置多个虚拟主机这个说法”,刚开始个人有点疑问,因为在我们在平时学习javaweb使用tomcat的时候,都没有涉及Host的设置,但是也同样可以正常使用。那么,为什么我们并没有设置虚拟主机也可以正常使用Tomcat发布项目和正常访问呢?Tomcat又是如何设置多个虚拟主机的呢?

    关于问题一:我们没有设置虚拟主机也可以正常使用tomcat,是因为有默认的虚拟主机,正如上面第4点所说,当Engine获得一个请求时,回去匹配对应的Host,当没有匹配到任何一个的时候,就会交给默认的Host来处理。这里我们可以看配置文件Server.xml:

      

      1.Engine里设置了默认的主机为localhost。

      2.localhost所有的webapp就放在webapps这个目录下,这就是为什么我们没有设置主机的情况下,我们的应用都是发布在webapps这个目录下的原因。

    问题二:tomcat是如何设置多个虚拟主机Host的呢?

       只需在原来的Host下边继续配置多个<Host>即可:

      

    四、Tomcat的一个工作流程

      假如用户的一个请求为:http://localhost/wsota/wsota_index.jsp

    1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
    2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
    3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
    4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
    5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
    6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
    7) path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
    8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
    9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
    10)Context把执行完了之后的HttpServletResponse对象返回给Host
    11)Host把HttpServletResponse对象返回给Engine
    12)Engine把HttpServletResponse对象返回给Connector
    13)Connector把HttpServletResponse对象返回给客户browser

    五、配置tomcat的内存的作用是什么呢?

      tomcat也是用java写的一个java程序,启动时也是一个运行在jvm上的一个java程序。

      java程序在启动时,jvm都会分配一个初始内存和一个最大内存给这个程序,初始内存和最大内存在一定程度上会影响程序的性能,例如在程序占用的内存达到最大内存的时候就需要去进行垃圾回收,自然就会影响程序的性能。所以对tomcat进行内存的配置也是如此。

    六、Tomcat到底帮我们做了哪些事情呢?

      

      

      

      

      

  • 相关阅读:
    SQL语句熟悉
    CSS3 attribute
    轮播器
    PHP 邮箱操作的Action
    Hole puncher Show Picture
    力扣算法——133.CloneGraph【M】
    力扣算法——134GasStation【M】
    力扣算法——135Candy【H】
    力扣算法——136SingleNumber【E】
    力扣算法——137SingleNumberII【M】
  • 原文地址:https://www.cnblogs.com/Zchaowu/p/7630211.html
Copyright © 2011-2022 走看看