Tomcat 工作原理

Python的gmsh库的配置 目录0 参考1 下载并解压gmsh-4.7.1.tar.gz2 手动下载电脑对应的gmsh-sdk版本3 修改gmsh-4.7.1.tar.gz 压缩包解压后的文件夹中的setup.py4 在cmd的dos窗口切换目录至setup.py所在的gmsh-4.7.1文件夹 ,输入指令:5 继续输入安装指令:6 检验 0 参考 https://blog.youkuaiyun.com/Lothar_Wind/article/details/107830925 1 下载并解压gmsh-4.7.1.tar.gz 网址:https: 阅读详情

1 - Tomcat Server的组成部分

1.1 - Server

A Server element represents the entire Catalina servlet container. (Singleton)

1.2 - Service

A Service element represents the combination of one or more Connector components that share a single Engine
Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求

1.3 - Connector

一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求
Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求
Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求

1.4 - Engine

The Engine element represents the entire request processing machinery associated with a particular Service
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理

1.5 - Host

代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配
每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path
当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理
匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context
所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配

1.6 - Context

一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成
Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类
当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类
如果找到,则执行该类,获得请求的回应,并返回

2 - Tomcat Server的结构图

3 - 配置文件$CATALINA_HOME/conf/server.xml的说明

该文件描述了如何启动Tomcat Server


<!----------------------------------------------------------------------------------------------->



<!-- 启动Server
     在端口8005处等待关闭命令
     如果接受到"SHUTDOWN"字符串则关闭服务器
     -->

<Server port="8005" shutdown="SHUTDOWN" debug="0">


  <!-- Listener ???
       目前没有看到这里
       -->

  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>


  <!-- Global JNDI resources ???
       目前没有看到这里,先略去
       -->

  <GlobalNamingResources>
    ... ... ... ...
  </GlobalNamingResources>


  <!-- Tomcat的Standalone Service
       Service是一组Connector的集合
       它们共用一个Engine来处理所有Connector收到的请求
       -->

  <Service name="Tomcat-Standalone">


    <!-- Coyote HTTP/1.1 Connector
         className : 该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector
         port : 在端口号8080处侦听来自客户browser的HTTP1.1请求
         minProcessors : 该Connector先创建5个线程等待客户请求,每个请求由一个线程负责
         maxProcessors : 当现有的线程不够服务客户请求时,若线程总数不足75个,则创建新线程来处理请求
         acceptCount : 当现有线程已经达到最大数75时,为客户请求排队
                       当队列中请求数超过100时,后来的请求返回Connection refused错误
         redirectport : 当客户请求是https时,把该请求转发到端口8443去
         其它属性略
         -->

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" 
               port="8080" 
               minProcessors="5" maxProcessors="75" acceptCount="100" 
               enableLookups="true" 
               redirectPort="8443" 
               debug="0" 
               connectionTimeout="20000" 
               useURIValidationHack="false" 
               disableUploadTimeout="true" />


    <!-- Engine用来处理Connector收到的Http请求
         它将匹配请求和自己的虚拟主机,并把请求转交给对应的Host来处理
         默认虚拟主机是localhost
         -->

    <Engine name="Standalone" defaultHost="localhost" debug="0">
    

      <!-- 日志类,目前没有看到,略去先 -->

      <Logger className="org.apache.catalina.logger.FileLogger" .../>

      <!-- Realm,目前没有看到,略去先 -->

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>


      <!-- 虚拟主机localhost
           appBase : 该虚拟主机的根目录是webapps/
           它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理
           -->

      <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
      

        <!-- 日志类,目前没有看到,略去先 -->

        <Logger className="org.apache.catalina.logger.FileLogger" .../>
      

        <!-- Context,对应于一个Web App
             path : 该Context的路径名是"",故该Context是该Host的默认Context
             docBase : 该Context的根目录是webapps/mycontext/
             -->

        <Context path="" docBase="mycontext" debug="0"/>
        

        <!-- 另外一个Context,路径名是/wsota -->

        <Context path="/wsota" docBase="wsotaProject" debug="0"/>
             
        
      </Host>
      
    </Engine>

  </Service>

</Server>


<!----------------------------------------------------------------------------------------------->

4 - Context的部署配置文件web.xml的说明

一个Context对应于一个Web App,每个Web App是由一个或者多个servlet组成的
当一个Web App被初始化的时候,它将用自己的ClassLoader对象载入“部署配置文件web.xml”中定义的每个servlet类
它首先载入在$CATALINA_HOME/conf/web.xml中部署的servlet类
然后载入在自己的Web App根目录下的WEB-INF/web.xml中部署的servlet类
web.xml文件有两部分:servlet类定义和servlet映射定义
每个被载入的servlet类都有一个名字,且被填入该Context的映射表(mapping table)中,和某种URL PATTERN对应
当该Context获得请求时,将查询mapping table,找到被请求的servlet,并执行以获得请求回应

分析一下所有的Context共享的web.xml文件,在其中定义的servlet被所有的Web App载入


<!----------------------------------------------------------------------------------------------->


<web-app>


  <!-- 概述:
       该文件是所有的WEB APP共用的部署配置文件,
       每当一个WEB APP被DEPLOY,该文件都将先被处理,然后才是WEB APP自己的/WEB-INF/web.xml
       -->



  <!--  +-------------------------+  -->
  <!--  |    servlet类定义部分    |  -->
  <!--  +-------------------------+  -->

  

  <!-- DefaultServlet
       当用户的HTTP请求无法匹配任何一个servlet的时候,该servlet被执行
       URL PATTERN MAPPING : /
       -->

    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>


  <!-- InvokerServlet
       处理一个WEB APP中的匿名servlet
       当一个servlet被编写并编译放入/WEB-INF/classes/中,却没有在/WEB-INF/web.xml中定义的时候
       该servlet被调用,把匿名servlet映射成/servlet/ClassName的形式
       URL PATTERN MAPPING : /servlet/*
       -->

    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>


  <!-- JspServlet
       当请求的是一个JSP页面的时候(*.jsp)该servlet被调用
       它是一个JSP编译器,将请求的JSP页面编译成为servlet再执行
       URL PATTERN MAPPING : *.jsp
       -->

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>logVerbosityLevel</param-name>
            <param-value>WARNING</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>



  <!--  +---------------------------+  -->
  <!--  |    servlet映射定义部分    |  -->
  <!--  +---------------------------+  -->

    
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>


  <!--  +------------------------+  -->
  <!--  |    其它部分,略去先    |  -->
  <!--  +------------------------+  -->

    ... ... ... ...

</web-app>


<!----------------------------------------------------------------------------------------------->

5 - Tomcat Server处理一个http请求的过程

假设来自客户的请求为:
http://localhost:8080/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 的工作原理么! 前言: SpringBoot 就像一条巨蟒,慢慢缠绕着我们,使我们麻痹。不得不承认,使用了 SpringBoot 确实提高了工作效率,但同时也让我们遗忘了很多技能。刚入社会的时候,我还是通过 Tomcat 手动部署 JavaWeb项目,还经常对 Tomcat 进行性能调优。除此之外,还需要自己理清楚各 Jar 之间的关系,以避免 Jar丢失和各版本冲突导致服务启动异常的问题。到如今,这些繁琐而又重复的工作已经统统交给 SpringBoot处理,我们可以把更多的精力放在业务逻辑上。但是,清楚 Tomcat 阅读详情

相关推荐

使用Python和Gmsh生成颗粒状复合材料盒装内插杆模型的网格(VTK)

在该函数中,我们首先创建了一个Gmsh模型对象,然后定义了盒子的边界框和内插杆的半径和长度。接下来,我们使用这些参数创建了盒子和内插杆的几何体,并使用布尔运算符从盒子中减去了内插杆,以创建颗粒状复合材料。在本文中,我们将介绍如何使用Python编程语言和Gmsh软件库生成颗粒状复合材料盒装内插杆模型的网格,并将其导出为VTK格式。然后运行脚本,它将生成名为"composite_mesh.vtk"的VTK文件,包含颗粒状复合材料盒装内插杆模型的网格数据。函数,该函数将生成的网格导出为VTK文件。

WbhsOcaml的博客 518

Pygmsh,Fipy,图形可视化

是一个用于三维可视化的Python库。它可以用于绘制三维图形、曲面、等值线和点云数据。它使用VTK后端进行绘图,并提供了一个类似于MATLAB的界面,使用户能够轻松地创建复杂的三维图形。, traits,PyQt4等工具包。依次对VTK, traits,PyQt4和mayavi进行下载安装或者在官网直接下载手动安装。Pyvista是一款Python的可视化工具包(VTK),比VTK、pyqt5等操作简单。注意:VTK必须与mayavi版本对应。如果pip下载找不到vtk对应版本,可以在。

liuyhoo 1441

Tomcat工作原理及Java实现

例如,一个组件可能负责解析请求头,另一个组件可能负责解析请求体,还有一个组件可能负责执行Servlet的service()方法等。当Tomcat接收到请求后,它会根据URL匹配到对应的Servlet,并创建一个ServletRequest对象和ServletResponse对象,然后将这两个对象传递给Servlet的service()方法。Tomcat作为一个Servlet容器,通过接收和解析客户端请求,管理和执行Servlet组件,以及处理请求和生成响应等步骤来实现其功能。一、Tomcat的工作原理。

2301_79365003的博客 213

tomcat的原理及作用

什么是tomcat? Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作...

qq_24662345的博客 5136

pygmsh:适用于Python的Gmsh

适用于Python的Gmsh。 pygmsh将的功能与Python的多功能性结合在一起。 它提供了Gmsh自己的Python界面的有用抽象,因此您可以更轻松地创建复杂的几何图形。 要使用,请从安装Gmsh本身和pygmsh: [sudo] apt install python3-gmsh pip install pygmsh 本文档和目录包含许多小示例。 有关完整的文档,请参见。 平面形状 多边形 圆圈 (B-)花键 代码: import pygmsh with pygmsh . geo . Geometry () as geom : geom . add_polygon ( [ [ 0.0 , 0.0 ], [ 1.0 , - 0.2 ], [ 1.1 , 1.2 ],

NB-IoT开发避坑指南:STM32下AT指令状态机的设计与优化

本文深入探讨了在STM32平台上为NB-IoT模组开发时,如何用状态机(FSM)设计替代传统的阻塞式AT指令处理方法。通过构建非阻塞、事件驱动的AT指令引擎,有效解决了系统卡顿、响应迟缓等问题,并详细介绍了状态机的设计、实现与高级优化技巧,助力开发者打造健壮可靠的物联网设备通信核心。

q5r6s7的博客 758

TOMCAT工作原理

Tomcat之工作原理 一、TOMCAT描述 tomcat是java web应用服务器,实现了Java EE部分技术规范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 Sun 公 司为企业级应用推出的标准平台,定义了一系列用于企业级开发的技术规范,除了上述的之外,还有 EJB、Java Mail、JPA、JTA...

minioesina的Linux 720

【AI Infra】Perfetto性能分析工具指南

Perfetto是一款开源性能分析工具,提供系统级和应用级的活动数据追踪功能。其界面分为四个区域:左侧操作区(包含Trace查看、SQL查询、预置分析等功能)、上方信息区、中间图形化展示区以及下方详细信息区。工具支持快捷键操作(w/s缩放、a/d移动、m标记等),并能高效处理大体积Trace文件。通过Timeline分析可发现性能瓶颈,如案例中update_actor耗时过高的问题,最终定位到CPU offloading导致的MemcpyH2D操作耗时过长,提出了优化方案。Perfetto相比Systrac

baiweizeng的博客 1507

tomcat工作原理(基本过程)

tomcat工作原理铺垫知识tomcat工作原理tomcat工作流程图 今天嘞,我们来粗略的谈一下tomcat的工作原理,希望有错误的地方请大家积极指出! 铺垫知识 emmm,在说之前我先说一下基本的铺垫知识吧。 tomcat是使用java语言编写的 计算机依靠网卡设备和外界交互,网卡将电信号转变为物理信号(0,1),网卡在数据转化完毕之后将数据交给端口 一台电脑最多可以开216个端口,不会出现...

qq_43677686的博客 5322

Halcon 3D点云处理实战:从PLY文件读取到曲面匹配的完整流程(附避坑指南)

本文详细介绍了Halcon在3D点云处理中的完整流程,从PLY文件读取到曲面匹配,特别强调了3D算子的应用技巧和避坑指南。通过实战案例和参数优化建议,帮助开发者高效处理工业视觉检测中的复杂点云数据,提升匹配精度和性能。

weixin_42535720的博客 278

【AI之路】cmd命令行通过Huggingface镜像站快速下载模型文件的方法

Hugging Face Hub 是分享机器学习模型、演示、数据集和指标的首选之地。huggingface_hub 库可以轻松下载Huggingface上有用的模型和数据集元数据。但大模型文件通常较大,国内下载太慢,那有没有高效便捷的方法?这个当然必须有!看到了吗?只是添加一个参数,下载大模型就搞定了。当然也可以使用python程序来下载。具体见前期博文:【AI之路】使用huggingface_hub通过huggingface镜像站hf-mirror.com下载大模型(附代码,实现大模型自由)

IT里的交易员-博客 1853

Tomcat的RewriteValve的工作原理

项目内容作用实现 URL 重写,支持 SEO、路径美化、安全控制等原理在请求到达 Web 应用前,根据中的规则进行路径匹配和重写配置方式在server.xml中添加,并创建文件适用场景单一 Tomcat 部署时的 URL 控制,适合中低并发环境如果你正在使用 Tomcat 并希望在不修改应用代码的前提下实现 URL 重写,RewriteValve 是一个非常实用的工具。如果你需要更高级的功能(如条件判断、反向代理等),可以考虑结合 Apache 或 Nginx 使用。

Java的专栏 1244

【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。 WB32也可输出PWM,需配置WB32上的定时器。 在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。 本章需要使用固件库TIM例程

北海村夫的博客 4637

Tomcat 工作原理,超级详细

本文介绍了Tomcat作为开源Java Web应用服务器的核心功能与架构。首先解释了Tomcat实现了Java EE的部分技术规范,如Servlet、JSP等。随后重点分析了Tomcat的核心组件Container和Connector,详细阐述了Container的四层结构(Engine、Host、Context、Wrapper)及其生命周期管理机制。接着描述了Tomcat的启动流程,从Bootstrap.main()到Catalina的load和start方法,以及Server.xml的解析过程。最后说明

weixin_42078953的博客 1962

MATLAB基础应用精讲-【数模应用】数字预失真(DPD)(附MATLAB代码实现)

近年来,随着无线通信技术的发展,高功率放大器 (PA) 在提高信号传输功率的同时,也带来了非线性失真问题。PA的非线性失真会造成信号频谱扩展、功率下降、邻道干扰等问题,严重影响系统性能。为了克服PA的非线性失真,数字预失真 (DPD) 技术应运而生。DPD技术通过在发射机中引入一个非线性模块,对信号进行预失真处理,从而补偿PA的非线性失真。

qq_36130719的博客 896

SolidWorks速成教程P3-5【零件 | 第五节】——异形孔向导&线性阵列&镜像

这节介绍异形孔向导、线性阵列、镜像。

嵌入式阿齐Archie 6073

Tomcat工作原理介绍

从工作原理方面来认识学习Tomcat

qiaotl的博客 2228

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Tomcat工作原理详细介绍

大部分企业的 Web 应用都运行在它上面,Tomcat 对于程序员来说算是老朋友了,那么今天带大家走近这位老朋友,看看它是如何处理 Web 请求,以及它内部的体系结构,这对帮助我们理解 Tomcat 的使用大有益处。本文你将会学会如下内容:Web 容器与 TomcatTomcat 连接器Tomcat 容器要说清楚 Tomcat 做的事情先要从早期的 Web 应用说起。图 1:浏览器通过 HTTP 服务器获取静态资源如图 1 所示,最开始用户通过浏览器查看诸如新闻之类的静态资源,此时就需要通过 HTTP 服务

Java搜索工程技术栈 6216

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TOMCAT目录结构和基本工作原理

Tomcat Tomcat基本工作原理 旧版的Tomcat,本质依旧是使用SOCKET进行通信,通过将Socket的输入输出流进行包装,获得Request和Response对象,之后使用用户端请求的URL来构建servlet对象,使用Request和Response两个对象去调用servlet对象的service方法;(实际上没有这么简单,但是大概思路是这样) //Tomcat所做的工作(使用简单的代码来说明) ServerSocket serverSocket = new ServerSocket(808

qq_37040929的博客 176

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

8分钟讲完 Tomcat架构及工作原理

摘要:视频《JavaWeb开发必看!Tomcat架构及工作原理》详细解析了Tomcat的核心架构。重点介绍了Tomcat的目录结构:bin目录包含启动(startup.bat)和关闭(shutdown.bat)服务器的脚本;conf目录存放关键配置文件如server.xml;lib目录存储jar包;webapps目录存放网络内容;logs和temp目录分别保存日志和临时文件。通过8分钟讲解,帮助开发者快速掌握Tomcat的基本工作原理和文件组织方式。

q20202828的博客 1260

【Tomcat】Tomcat工作原理及简单模拟实现

Tomcat应该都不陌生,我们经常会把写好的代码打包放在Tomcat里并启动,然后在浏览器里就能愉快的调用我们写的代码来实现相应的功能了,那么Tomcat是如何工作的? 一、Tomcat工作原理 我们启动Tomcat时双击的startup.bat文件的主要作用是找到catalina.bat,并且把参数传递给它,而catalina.bat中有这样一段话: Bootstrap.class是整个Tom...

weixin_34270865的博客 146

tomcat的工作原理

本文源自转载:你还记得 Tomcat 的工作原理么 一、Tomcat 整体架构 Tomcat 是一个免费的、开源的、轻量级的 Web 应用服务器。适合在并发量不是很高的中小企业项目中使用。 二、文件目录结构 以下是 Tomcat 8 主要目录结构 三、功能组件结构 Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tom..

dongcheng_2015的博客 3443

Tomcat工作原理及简单模拟实现

Tomcat应该都不陌生,我们经常会把写好的代码打包放在Tomcat里并启动,然后在浏览器里就能愉快的调用我们写的代码来实现相应的功能了,那么Tomcat是如何工作的?一、Tomcat工...

磊哥聊Java 215

TOMCAT架构及其工作原理

TOMCAT架构及其工作原理

RunWithSmile的博客 919
上一篇: Jetty 源码分析
下一篇: Tomcat 源码学习之JIoEndpoint
kobejayandy
博客等级 码龄18年 2853粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值