精华内容
下载资源
问答
  • Tomcat用途

    千次阅读 2019-03-27 13:22:20
    这篇文章主要反思了Tomcat的作用。本文主要是自己的一个思考过程,不是严谨地介绍和详细总结Tomcat使用方法的文章。最后尝试利用tomcat的知识,以URL的形式来访问文件夹(在浏览器的地址栏直接黏贴文件的路径也可以...

    总结:

    这篇文章主要反思了Tomcat的作用。本文主要是自己的一个思考过程,不是严谨地介绍和详细总结Tomcat使用方法的文章。最后尝试利用tomcat的知识,以URL的形式来访问文件夹(在浏览器的地址栏直接黏贴文件的路径也可以访问,但是这里可以不用实际的路径进行访问)。该例子实用意义不大,主要是加深对tomcat的理解。

    教材上说,Tomcat是Apache组织的Jakarta项目的一个重要子项目,它是Sun公司推荐的运行Servlet和JSP的容器。也就是说它是一个容器,但随处也可见“Tomcat服务器”的说法。

      事实上,Tomcat即是容器也是服务器。不过本文主要涉及Tomcat发挥容器功能的部分。Tomcat是用Java语言编写的,需要运行在Java虚拟机上,所以一般需要先安装JDK,以提供运行环境。
      上面说过Tomcat是一个容器,但为什么开发出来的应用需要装进Tomcat这个容器呢。忽略各个文件之间的跳转,web应用本质只是一个装有很多资源(java/html/jsp/js/css等各种格式文件)的文件夹。假如我们有一个web应用projectA,我们在某台计算机A把这些文件写好后,就希望其他设备能够通过一些方式来访问我们的资源。一种方法是通过在浏览器地址栏输入URL来实现资源的访问。
      那么从我们在计算机A上写好某个文件夹到文件夹能够被其他计算机所访问,需要什么呢。首先需要我们的互联网。计算机B先通过互联网找到计算机A。
      而这样做的前提是你这个电脑必须在互联网这个网络里面,这样别人才能访问到你。也就是说一台电脑必须要有IP地址才能称为服务器。但这样也只是找到了IP地址而已,我们还需要找到对应的主机(注:一般主机是指一台电脑,但在tomcat中,虚拟主机指的是计算机中的某个文件夹)。但就算找到了计算机A,我们怎么知道要去哪里寻找web应用projectA呢。Tomcat容器就是来解决这个问题的。在我看来,Tomcat的一个重要的功能就在于“映射”(通过配置文件实现)。


    虚拟主机名的配置

      首先确定一个虚拟的主机名。Tomcat默认使用localhost作为虚拟主机名,并映射到webapps文件夹。在Tomcat安装目录下的server.xml文件夹的内容如下所示:

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

      如果也想要同时能够访问计算机A中的不同路径下的文件,这时候就可以添加一个<Host>元素,把这个新的路径添加进去,然后给它起一个虚拟的主机名字(关于虚拟主机名和路径的配置,因为是根据虚拟目录来指定要访问的路径,如果虚拟目录的路径是绝对路径,那么这里的路径没有意义,但是如果采用相对路径的方式,那么这里的路径就有意义。而虚拟的主机名除了在这里进行设置外,还需要在hosts中进行设置,并且需要在catalina文件夹下新建一个同名的文件夹,虚拟目录可以在这里进行配置,这些内容会在下面具体展开)。

    <Engine name="Catalina" defaultHost = "localhost">
      ...
    <Host name= "newhost" appBase="d:\newhost">
      ...
    </Host>
    </Engine>
    

    (注:还需要到Windows系统中hosts进行注册,这样ip地址才能映射到这个虚拟主机)


    虚拟目录的配置

      然后就是配置虚拟目录。例如想在url为localhost/chapter01时跳转到特定的目录下。就需要在<Tomcat安装目录>\conf\Catalina\localhost目录下新建一个chapter01.xml(命名任意)。输入:

    <Context path="/chapter01" docBase="d:\chapter01">
    

      也就是说,从表面上来看,url中的localhost/chapter01貌似是指向localhost下面的chapter01文件夹,但其实上并非如此,这两者仍然要分开进行指定。并且不一定存在父子文件夹的关系。除此以外,还可以指定默认页面(例如指定welcome.html)。打开<Tomcat根目录>\conf目录下的web.xml文件。这时候需要在chapter01目录中创建WEB-INF目录,并在该目录下创建一个web.xml文件。配置方法如下:

        <?xml version="1.0" encoding="ISO-8859-1"?>
        <web-app ...>   
               <welcome-file-list>
                    <welcome-file>welcome.html</welcome-file>
            </welcome-file-list>
         </web-app>
    

    (也可以在<Tomcat安装目录>/conf目录下的server.xml文件进行配置,但是需要进行重启后才生效)

      而tomcat的管理平台又起到什么作用呢。它列出了所有的web应用及其状态。并且提供每个web的启动、停止和卸载的功能。这意味着它可以选择电脑中哪部分资源有效,哪部分资源无效。那么这样来看的话,其实tomcat就像酒店前台,给你门卡让你去找到对应的房间(web资源),并且决定哪些房间不能进,哪些可以进去

      然后执行了startup.bat启动Tomcat。启动后其实就是把这些映射激活了。关闭后就相当于酒店前台走了,来访者(URL请求)不知如何是好。网上有人说启动了tomcat后,CATALINA_PATH & CATALINA_BASE will refer to the resource location.也就是说知道去哪里找我们的资源了。如果仔细看上面虚拟主机的配置内容,就会发现<Host>元素是放在<Engine>元素里面的。而Engine的name就是Catalina。一旦启动tomcat,就表明我们的配置能够生效。文件夹projectA就不是简单的一个文件夹了,而是变成了一个可以通过URL访问得到的一个文件夹。按照这种思路的话,我们其实可以自己定义一些路径(下文给出一个例子)。

      所以tomcat像是一个桥梁,外界访问服务器(某台计算机)资源的时候,tomcat能够找到对应的文件夹。所以当我们访问localhost://index.html,他就知道去这台电脑的哪个位置寻找资源index.html。当然,tomcat也有它力所难及的地方,例如编写有组织的web应用就不是它的强项了。这也是我们后面要不停地用Eclipse等进行整合开发的原因。

    一个简单的案例(用URL请求访问本地文件夹中的视频)

      假如我有视频放在文件夹(E:\jpvideo)中,其中有一个文件名为1.mp4,如果我想通过URL(例如:video/jpvideo/1.mp4)来访问电脑上的这个文件夹的资源。那么要怎么做呢。方法如下:
    a、首先来到tomcat安装目录下,找到server.xml。添加一个名为“video”的虚拟主机。

      <Host appBase="e:\" name="video">
      </Host>
    

    b、然后更改了hosts文件:(添加如下代码)

    127.0.0.1   video
    

    c、配置虚拟目录,方法是在<Tomcat安装目录>\conf\Catalina下面新建一个video文件夹,在video文件夹下面新建一个xml文件(名字任意),输入如下内容。

    <Context path = "/jpvideo" docBase="E:\jpvideo"/>
    

    注:由于此处使用的是绝对路径,所以Host的appBase路径的设置对实验结果没有影响

    d、最后通过cmd输入startup.bat来启动tomcat,激活这些配置。
    e、(验证)在地址栏中输入video/jpvideo/1.mp4,结果如下,可以直接打开视频并播放。

     



    作者:secondtown
    链接:https://www.jianshu.com/p/a32ce58cc9c2
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • Tomcat的作用

    万次阅读 2018-05-11 15:45:08
    1、Tomcat是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 2、当在一台机器上配置好Apache 服务器,可利用...
    1、Tomcat是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
      2、当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
      3、诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。
      4、另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
      5、不过,Tomcat处理静态HTML的能力不如Apache服务器。
    展开全文
  • 例如nginx + tomcat中,可以将动态资源交给tomcat,而静态资源则交给Nginx,这样可以减轻tomcat的负担,增加效率。 2. 反向代理 3. 负载均衡 4. 正向代理 二、HTTP 服务器 Nginx本身也是一个静态资源的...

    一、Nginx 能做什么

        1.  HTTP 服务器(动静分离)

        例如nginx + tomcat中,可以将动态资源交给tomcat,而静态资源则交给Nginx,这样可以减轻tomcat的负担,增加效率。

        2.  反向代理

        3.  负载均衡

        4.  正向代理

     

    二、HTTP 服务器

            Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现,首先看看Nginx做静态资源服务器

    server {
        listen       80;                                                         
        server_name  localhost;                                               
        client_max_body_size 1024M;
        location / {
               root   e:wwwroot;
               index  index.html;
        }
    }

            这样如果访问http://localhost 就会默认访问到E盘wwwroot目录下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。

            动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。

    upstream test{      
        server localhost:8080;  
        server localhost:8081;  
    }   
    server {  
        listen       80;  
        server_name  localhost;  
        location / {  
            root   e:wwwroot;  
            index  index.html;  
        }  
             
    # 所有静态请求都由nginx处理,存放目录为html  
        location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {  
            root    e:wwwroot;  
        }  
                 
    # 所有动态请求都转发给tomcat处理  
        location ~ .(jsp|do)$ {  
            proxy_pass  ;  
        }
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
           root   e:wwwroot;  
        }  
    }

            这样我们就可以吧HTML以及图片和css以及js放到wwwroot目录下,而tomcat只负责处理jsp和请求,例如当我们后缀为gif的时候,Nginx默认会从wwwroot获取到当前请求的动态图文件返回,当然这里的静态文件跟Nginx是同一台服务器,我们也可以在另外一台服务器,然后通过反向代理和负载均衡配置过去就好了,只要搞清楚了最基本的流程,很多配置就很简单了,另外localtion后面其实是一个正则表达式,所以非常灵活。

     

    三、反向代理

           反向代理应该是Nginx做的最多的一件事了,什么是反向代理呢,以下是百度百科的说法:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。

     下面贴上一段简单的实现反向代理的代码。

    server 
    {
        listen       80;                                                         
        server_name  localhost;                                               
        client_max_body_size 1024M;
        location / {
            proxy_pass http://localhost:8080;
          proxy_set_header Host $host:$server_port;
        }
    }

           保存配置文件后启动Nginx,这样当我们访问localhost的时候,就相当于访问localhost:8080了。反向代理的另一个作用就是实现负载均衡。

     

    四、负载均衡

           负载均衡也是Nginx常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。

        而Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略。 

        1、RR(默认)

           每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 

    upstream test {
         server localhost:8080;
          server localhost:8081;
    }
    server {
        listen       81;                                                         
        server_name  localhost;                                               
        client_max_body_size 1024M;
        location / {
            proxy_pass http://test;
            proxy_set_header Host $host:$server_port;
        }
    }

     负载均衡的核心代码为 :

    upstream test {
        server localhost:8080;
        server localhost:8081;
    }

            这里我配置了2台服务器,当然实际上是一台,只是端口不一样而已,而8081的服务器是不存在的,也就是说访问不到,但是我们访问http://localhost 的时候,也不会有问题,会默认跳转到http://localhost:8080 具体是因为Nginx会自动判断服务器的状态,如果服务器处于不能访问(服务器挂了),就不会跳转到这台服务器,所以也避免了一台服务器挂了影响使用的情况,由于Nginx默认是RR策略,所以我们不需要其他更多的设置。 

       2、权重

           指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如 :

    upstream test {
        ip_hash;
        server localhost:8080;
        server localhost:8081;
    
    }

          那么10次一般只会有1次会访问到8081,而有9次会访问到8080。

     

        3、ip_hash

           上面的2种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

    upstream test {
        ip_hash;
        server localhost:8080;
        server localhost:8081;
    }


        4、fair(第三方)

           按后端服务器的响应时间来分配请求,响应时间短的优先分配。 

    upstream backend { 
        fair; 
        server localhost:8080;
        server localhost:8081;
    }


        5、url_hash(第三方)

           按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 

     upstream backend { 
        hash $request_uri; 
        hash_method crc32; 
        server localhost:8080;
        server localhost:8081;
    }


           以上5种负载均衡各自适用不同情况下使用,所以可以根据实际情况选择使用哪种策略模式,不过fair和url_hash需要安装第三方模块才能使用,由于本文主要介绍Nginx能做的事情,所以Nginx安装第三方模块不会再本文介绍 。

     

    五、正向代理

           正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。当你需要把你的服务器作为代理服务器的时候,可以用Nginx来实现正向代理,但是目前Nginx有一个问题,那么就是不支持HTTPS,虽然我百度到过配置HTTPS的正向代理,但是到最后发现还是代理不了,当然可能是我配置的不对,所以也希望有知道正确方法的同志们留言说明一下。 

    resolver 114.114.114.114 8.8.8.8;
    
    server {
        resolver_timeout 5s;
        listen 81;
        access_log  e:wwwrootproxy.access.log;
        error_log   e:wwwrootproxy.error.log;
        location / {
            proxy_pass ;
        }
    }


           resolver是配置正向代理的DNS服务器,listen 是正向代理的端口,配置好了就可以在ie上面或者其他代理插件上面使用服务器ip+端口号进行代理了。         

     

     

     

    展开全文
  • tomcat 工作原理

    万次阅读 多人点赞 2016-07-25 18:20:27
    大致的架构是 jsp+tomcat+mysql,记录tomcat学习一点笔记。 Tomcat是Servlet运行环境(容器),每个servlet执行init(),service(),destory() 以下是servlet的作用 Servlet的调用 Tomcat的工作...

    大致的架构是 jsp+tomcat+mysql,记录tomcat学习一点笔记。

    Tomcat是Servlet运行环境(容器),每个servlet执行init(),service(),destory()

    以下是servlet的作用

    Servlet的调用

    Tomcat的工作模式3种:独立Servlet,进程内servlet,进程外servlet。

    Tomcat是一个基于组件的服务器,他的构建组件都是可以配置的,其中最外层的组件是Catalina Servlet容器,其他组阿金一定要按照一定的格式要求配置在这个顶层的容器中。

      Tomcat各个组件是在$CATLINA_HOME/conf/server.xml文件中配置的。

     

    复制代码
    < Server >  顶层类元素,可包含多个service
    < Service >  顶层类元素,可包含一个Engine和多个Connector
    < Connector />  链接类容器,代表通信接口
    < Engine >  容器元素,为Service处理客户请求,含多个Host
    < Host >  容器元素,为Host处理客户请求,含多个Context
    < Context />  容器元素,为Web应用处理客户请求
    </ Host >
    </ Engine >
    </ Service >
    </ Server >
    复制代码

     

    一个java web应用在Tomcat中与一个Context对应,是一一对应关系。

    Java Web应该可以包含如下内容:

    • Servlet
    • JSP pages
    • Java Classes
    • static resources(HTML documents, pictures, etc.)
    • Description Documents of Web  Applications.


    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

    [html]  view plain  copy
    1. <!----------------------------------------------------------------------------------------------->  
    2.   
    3.   
    4.   
    5. <!-- 启动Server  
    6.      在端口8005处等待关闭命令  
    7.      如果接受到"SHUTDOWN"字符串则关闭服务器  
    8.      -->  
    9.   
    10. <Server port="8005" shutdown="SHUTDOWN" debug="0">  
    11.   
    12.   
    13.   <!-- Listener ???  
    14.        目前没有看到这里  
    15.        -->  
    16.   
    17.   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>  
    18.   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>  
    19.   
    20.   
    21.   <!-- Global JNDI resources ???  
    22.        目前没有看到这里,先略去  
    23.        -->  
    24.   
    25.   <GlobalNamingResources>  
    26.     ... ... ... ...  
    27.   </GlobalNamingResources>  
    28.   
    29.   
    30.   <!-- Tomcat的Standalone Service  
    31.        Service是一组Connector的集合  
    32.        它们共用一个Engine来处理所有Connector收到的请求  
    33.        -->  
    34.   
    35.   <Service name="Tomcat-Standalone">  
    36.   
    37.   
    38.     <!-- Coyote HTTP/1.1 Connector  
    39.          className : 该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector  
    40.          port : 在端口号8080处侦听来自客户browser的HTTP1.1请求  
    41.          minProcessors : 该Connector先创建5个线程等待客户请求,每个请求由一个线程负责  
    42.          maxProcessors : 当现有的线程不够服务客户请求时,若线程总数不足75个,则创建新线程来处理请求  
    43.          acceptCount : 当现有线程已经达到最大数75时,为客户请求排队  
    44.                        当队列中请求数超过100时,后来的请求返回Connection refused错误  
    45.          redirectport : 当客户请求是https时,把该请求转发到端口8443去  
    46.          其它属性略  
    47.          -->  
    48.   
    49.     <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"   
    50.                port="8080"   
    51.                minProcessors="5" maxProcessors="75" acceptCount="100"   
    52.                enableLookups="true"   
    53.                redirectPort="8443"   
    54.                debug="0"   
    55.                connectionTimeout="20000"   
    56.                useURIValidationHack="false"   
    57.                disableUploadTimeout="true" />  
    58.   
    59.   
    60.     <!-- Engine用来处理Connector收到的Http请求  
    61.          它将匹配请求和自己的虚拟主机,并把请求转交给对应的Host来处理  
    62.          默认虚拟主机是localhost  
    63.          -->  
    64.   
    65.     <Engine name="Standalone" defaultHost="localhost" debug="0">  
    66.       
    67.   
    68.       <!-- 日志类,目前没有看到,略去先 -->  
    69.   
    70.       <Logger className="org.apache.catalina.logger.FileLogger" .../>  
    71.   
    72.       <!-- Realm,目前没有看到,略去先 -->  
    73.   
    74.       <Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>  
    75.   
    76.   
    77.       <!-- 虚拟主机localhost  
    78.            appBase : 该虚拟主机的根目录是webapps/  
    79.            它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理  
    80.            -->  
    81.   
    82.       <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">  
    83.         
    84.   
    85.         <!-- 日志类,目前没有看到,略去先 -->  
    86.   
    87.         <Logger className="org.apache.catalina.logger.FileLogger" .../>  
    88.         
    89.   
    90.         <!-- Context,对应于一个Web App  
    91.              path : 该Context的路径名是"",故该Context是该Host的默认Context  
    92.              docBase : 该Context的根目录是webapps/mycontext/  
    93.              -->  
    94.   
    95.         <Context path="" docBase="mycontext" debug="0"/>  
    96.           
    97.   
    98.         <!-- 另外一个Context,路径名是/wsota -->  
    99.   
    100.         <Context path="/wsota" docBase="wsotaProject" debug="0"/>  
    101.                
    102.           
    103.       </Host>  
    104.         
    105.     </Engine>  
    106.   
    107.   </Service>  
    108.   
    109. </Server>  
    110.   
    111.   
    112. <!----------------------------------------------------------------------------------------------->  


     

    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载入

    [html]  view plain  copy
    1. <!----------------------------------------------------------------------------------------------->  
    2.   
    3.   
    4. <web-app>  
    5.   
    6.   
    7.   <!-- 概述:  
    8.        该文件是所有的WEB APP共用的部署配置文件,  
    9.        每当一个WEB APP被DEPLOY,该文件都将先被处理,然后才是WEB APP自己的/WEB-INF/web.xml  
    10.        -->  
    11.   
    12.   
    13.   
    14.   <!--  +-------------------------+  -->  
    15.   <!--  |    servlet类定义部分    |  -->  
    16.   <!--  +-------------------------+  -->  
    17.   
    18.     
    19.   
    20.   <!-- DefaultServlet  
    21.        当用户的HTTP请求无法匹配任何一个servlet的时候,该servlet被执行  
    22.        URL PATTERN MAPPING : /  
    23.        -->  
    24.   
    25.     <servlet>  
    26.         <servlet-name>default</servlet-name>  
    27.         <servlet-class>  
    28.           org.apache.catalina.servlets.DefaultServlet  
    29.         </servlet-class>  
    30.         <init-param>  
    31.             <param-name>debug</param-name>  
    32.             <param-value>0</param-value>  
    33.         </init-param>  
    34.         <init-param>  
    35.             <param-name>listings</param-name>  
    36.             <param-value>true</param-value>  
    37.         </init-param>  
    38.         <load-on-startup>1</load-on-startup>  
    39.     </servlet>  
    40.   
    41.   
    42.   <!-- InvokerServlet  
    43.        处理一个WEB APP中的匿名servlet  
    44.        当一个servlet被编写并编译放入/WEB-INF/classes/中,却没有在/WEB-INF/web.xml中定义的时候  
    45.        该servlet被调用,把匿名servlet映射成/servlet/ClassName的形式  
    46.        URL PATTERN MAPPING : /servlet/*  
    47.        -->  
    48.   
    49.     <servlet>  
    50.         <servlet-name>invoker</servlet-name>  
    51.         <servlet-class>  
    52.           org.apache.catalina.servlets.InvokerServlet  
    53.         </servlet-class>  
    54.         <init-param>  
    55.             <param-name>debug</param-name>  
    56.             <param-value>0</param-value>  
    57.         </init-param>  
    58.         <load-on-startup>2</load-on-startup>  
    59.     </servlet>  
    60.   
    61.   
    62.   <!-- JspServlet  
    63.        当请求的是一个JSP页面的时候(*.jsp)该servlet被调用  
    64.        它是一个JSP编译器,将请求的JSP页面编译成为servlet再执行  
    65.        URL PATTERN MAPPING : *.jsp  
    66.        -->  
    67.   
    68.     <servlet>  
    69.         <servlet-name>jsp</servlet-name>  
    70.         <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>  
    71.         <init-param>  
    72.             <param-name>logVerbosityLevel</param-name>  
    73.             <param-value>WARNING</param-value>  
    74.         </init-param>  
    75.         <load-on-startup>3</load-on-startup>  
    76.     </servlet>  
    77.   
    78.   
    79.   
    80.   <!--  +---------------------------+  -->  
    81.   <!--  |    servlet映射定义部分    |  -->  
    82.   <!--  +---------------------------+  -->  
    83.   
    84.       
    85.     <servlet-mapping>  
    86.         <servlet-name>default</servlet-name>  
    87.         <url-pattern>/</url-pattern>  
    88.     </servlet-mapping>  
    89.   
    90.     <servlet-mapping>  
    91.         <servlet-name>invoker</servlet-name>  
    92.         <url-pattern>/servlet/*</url-pattern>  
    93.     </servlet-mapping>  
    94.   
    95.     <servlet-mapping>  
    96.         <servlet-name>jsp</servlet-name>  
    97.         <url-pattern>*.jsp</url-pattern>  
    98.     </servlet-mapping>  
    99.   
    100.   
    101.   <!--  +------------------------+  -->  
    102.   <!--  |    其它部分,略去先    |  -->  
    103.   <!--  +------------------------+  -->  
    104.   
    105.     ... ... ... ...  
    106.   
    107. </web-app>  
    108.   
    109.   
    110. <!----------------------------------------------------------------------------------------------->  


    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



    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

    [html]  view plain  copy
    1. <!----------------------------------------------------------------------------------------------->  
    2.   
    3.   
    4.   
    5. <!-- 启动Server  
    6.      在端口8005处等待关闭命令  
    7.      如果接受到"SHUTDOWN"字符串则关闭服务器  
    8.      -->  
    9.   
    10. <Server port="8005" shutdown="SHUTDOWN" debug="0">  
    11.   
    12.   
    13.   <!-- Listener ???  
    14.        目前没有看到这里  
    15.        -->  
    16.   
    17.   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>  
    18.   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>  
    19.   
    20.   
    21.   <!-- Global JNDI resources ???  
    22.        目前没有看到这里,先略去  
    23.        -->  
    24.   
    25.   <GlobalNamingResources>  
    26.     ... ... ... ...  
    27.   </GlobalNamingResources>  
    28.   
    29.   
    30.   <!-- Tomcat的Standalone Service  
    31.        Service是一组Connector的集合  
    32.        它们共用一个Engine来处理所有Connector收到的请求  
    33.        -->  
    34.   
    35.   <Service name="Tomcat-Standalone">  
    36.   
    37.   
    38.     <!-- Coyote HTTP/1.1 Connector  
    39.          className : 该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector  
    40.          port : 在端口号8080处侦听来自客户browser的HTTP1.1请求  
    41.          minProcessors : 该Connector先创建5个线程等待客户请求,每个请求由一个线程负责  
    42.          maxProcessors : 当现有的线程不够服务客户请求时,若线程总数不足75个,则创建新线程来处理请求  
    43.          acceptCount : 当现有线程已经达到最大数75时,为客户请求排队  
    44.                        当队列中请求数超过100时,后来的请求返回Connection refused错误  
    45.          redirectport : 当客户请求是https时,把该请求转发到端口8443去  
    46.          其它属性略  
    47.          -->  
    48.   
    49.     <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"   
    50.                port="8080"   
    51.                minProcessors="5" maxProcessors="75" acceptCount="100"   
    52.                enableLookups="true"   
    53.                redirectPort="8443"   
    54.                debug="0"   
    55.                connectionTimeout="20000"   
    56.                useURIValidationHack="false"   
    57.                disableUploadTimeout="true" />  
    58.   
    59.   
    60.     <!-- Engine用来处理Connector收到的Http请求  
    61.          它将匹配请求和自己的虚拟主机,并把请求转交给对应的Host来处理  
    62.          默认虚拟主机是localhost  
    63.          -->  
    64.   
    65.     <Engine name="Standalone" defaultHost="localhost" debug="0">  
    66.       
    67.   
    68.       <!-- 日志类,目前没有看到,略去先 -->  
    69.   
    70.       <Logger className="org.apache.catalina.logger.FileLogger" .../>  
    71.   
    72.       <!-- Realm,目前没有看到,略去先 -->  
    73.   
    74.       <Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>  
    75.   
    76.   
    77.       <!-- 虚拟主机localhost  
    78.            appBase : 该虚拟主机的根目录是webapps/  
    79.            它将匹配请求和自己的Context的路径,并把请求转交给对应的Context来处理  
    80.            -->  
    81.   
    82.       <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">  
    83.         
    84.   
    85.         <!-- 日志类,目前没有看到,略去先 -->  
    86.   
    87.         <Logger className="org.apache.catalina.logger.FileLogger" .../>  
    88.         
    89.   
    90.         <!-- Context,对应于一个Web App  
    91.              path : 该Context的路径名是"",故该Context是该Host的默认Context  
    92.              docBase : 该Context的根目录是webapps/mycontext/  
    93.              -->  
    94.   
    95.         <Context path="" docBase="mycontext" debug="0"/>  
    96.           
    97.   
    98.         <!-- 另外一个Context,路径名是/wsota -->  
    99.   
    100.         <Context path="/wsota" docBase="wsotaProject" debug="0"/>  
    101.                
    102.           
    103.       </Host>  
    104.         
    105.     </Engine>  
    106.   
    107.   </Service>  
    108.   
    109. </Server>  
    110.   
    111.   
    112. <!----------------------------------------------------------------------------------------------->  


     

    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载入

    [html]  view plain  copy
    1. <!----------------------------------------------------------------------------------------------->  
    2.   
    3.   
    4. <web-app>  
    5.   
    6.   
    7.   <!-- 概述:  
    8.        该文件是所有的WEB APP共用的部署配置文件,  
    9.        每当一个WEB APP被DEPLOY,该文件都将先被处理,然后才是WEB APP自己的/WEB-INF/web.xml  
    10.        -->  
    11.   
    12.   
    13.   
    14.   <!--  +-------------------------+  -->  
    15.   <!--  |    servlet类定义部分    |  -->  
    16.   <!--  +-------------------------+  -->  
    17.   
    18.     
    19.   
    20.   <!-- DefaultServlet  
    21.        当用户的HTTP请求无法匹配任何一个servlet的时候,该servlet被执行  
    22.        URL PATTERN MAPPING : /  
    23.        -->  
    24.   
    25.     <servlet>  
    26.         <servlet-name>default</servlet-name>  
    27.         <servlet-class>  
    28.           org.apache.catalina.servlets.DefaultServlet  
    29.         </servlet-class>  
    30.         <init-param>  
    31.             <param-name>debug</param-name>  
    32.             <param-value>0</param-value>  
    33.         </init-param>  
    34.         <init-param>  
    35.             <param-name>listings</param-name>  
    36.             <param-value>true</param-value>  
    37.         </init-param>  
    38.         <load-on-startup>1</load-on-startup>  
    39.     </servlet>  
    40.   
    41.   
    42.   <!-- InvokerServlet  
    43.        处理一个WEB APP中的匿名servlet  
    44.        当一个servlet被编写并编译放入/WEB-INF/classes/中,却没有在/WEB-INF/web.xml中定义的时候  
    45.        该servlet被调用,把匿名servlet映射成/servlet/ClassName的形式  
    46.        URL PATTERN MAPPING : /servlet/*  
    47.        -->  
    48.   
    49.     <servlet>  
    50.         <servlet-name>invoker</servlet-name>  
    51.         <servlet-class>  
    52.           org.apache.catalina.servlets.InvokerServlet  
    53.         </servlet-class>  
    54.         <init-param>  
    55.             <param-name>debug</param-name>  
    56.             <param-value>0</param-value>  
    57.         </init-param>  
    58.         <load-on-startup>2</load-on-startup>  
    59.     </servlet>  
    60.   
    61.   
    62.   <!-- JspServlet  
    63.        当请求的是一个JSP页面的时候(*.jsp)该servlet被调用  
    64.        它是一个JSP编译器,将请求的JSP页面编译成为servlet再执行  
    65.        URL PATTERN MAPPING : *.jsp  
    66.        -->  
    67.   
    68.     <servlet>  
    69.         <servlet-name>jsp</servlet-name>  
    70.         <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>  
    71.         <init-param>  
    72.             <param-name>logVerbosityLevel</param-name>  
    73.             <param-value>WARNING</param-value>  
    74.         </init-param>  
    75.         <load-on-startup>3</load-on-startup>  
    76.     </servlet>  
    77.   
    78.   
    79.   
    80.   <!--  +---------------------------+  -->  
    81.   <!--  |    servlet映射定义部分    |  -->  
    82.   <!--  +---------------------------+  -->  
    83.   
    84.       
    85.     <servlet-mapping>  
    86.         <servlet-name>default</servlet-name>  
    87.         <url-pattern>/</url-pattern>  
    88.     </servlet-mapping>  
    89.   
    90.     <servlet-mapping>  
    91.         <servlet-name>invoker</servlet-name>  
    92.         <url-pattern>/servlet/*</url-pattern>  
    93.     </servlet-mapping>  
    94.   
    95.     <servlet-mapping>  
    96.         <servlet-name>jsp</servlet-name>  
    97.         <url-pattern>*.jsp</url-pattern>  
    98.     </servlet-mapping>  
    99.   
    100.   
    101.   <!--  +------------------------+  -->  
    102.   <!--  |    其它部分,略去先    |  -->  
    103.   <!--  +------------------------+  -->  
    104.   
    105.     ... ... ... ...  
    106.   
    107. </web-app>  
    108.   
    109.   
    110. <!----------------------------------------------------------------------------------------------->  


    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架构解析

    2019-10-19 19:47:30
    都是由于对web容器的认知不足,本书基于Tomcat 8.5.6全面介绍了Tomcat的架构、各组件的实现方案以及使用方式,主要包括Tomcat的基础组件架构以及工作原理,Tomcat与Web服务器集成以及性能优化,Tomcat部分扩展特性...
  • How Tomcat works(PDF)

    2019-01-20 22:09:09
    How Tomcat works(PDF),不可用于商业用途,如有版权问题,请联系删除!
  • tomcat8.0-jar包

    2018-01-05 08:39:19
    只提供包,不提供包安装说明,敬请谅解,谢谢!注:不保证适用一切用途
  • Java知识体系最强总结(2021版)

    万次阅读 多人点赞 2019-12-18 10:09:56
    Quartz Hibernate Shiro Spring Security Netty 搜索引擎 Lucene/Solr Elasticsearch ELK 中间件 消息中间件 RabbitMQ RocketMQ ActiveMQ Kafka 远程过程调用中间件 Dubbo 数据访问中间件 Web应用服务器 Tomcat ...
  • Tomcat与JDK版本对应关系,Tomcat各版本特性

    万次阅读 多人点赞 2019-10-18 11:44:13
    文章目录Alpha / Beta / StableApache Tomcat 9.xApache Tomcat 8.xApache Tomcat 7.xApache Tomcat 6.x Apache Tomcat是一个开源软件实现了Java Servlet和Java Server Pages技术。不同版本的Servlet和JSP规范可使用...
  • 不喜欢伸手党,但是很讨厌满身的铜臭味。该文档已经在网络流传多年,看到csdn上还有人大言不惭的索取积分。本链接制作交流使用,不做商业用途
  • 1、docker 是容器,tomcat是jsp应用服务器2、tomcat可以安装在物理机上,虚拟机上,也可以安装在Docker上。所以从这个角度讲,Docker也可以看做是一种超轻量化的虚拟机。3、Docker可以安装在物理机,虚拟机上,但不...
  • tomcat

    2021-04-19 14:09:32
    tomcat 一.Tomcat介绍 免费的、开放源代码的Web应用服务器,属于轻量级应用服务器 在中小型系统和并发访问用户不是很多的场合下被普遍使用 是开发和调试JSP程序的首选 Apache软件基金会(Apache Software Foundation)...
  • 。该文档已经在网络流传多年,看到csdn上还有人大言不惭的索取积分。本链接制作交流使用,不做商业用途,很遗憾无法设置积分为零
  • Tomcat中使用servletContext 运行在JVM上的每一个web应用程序都有一个与之对应的Servlet上下文(Servlet运行环境) Servlet API提供ServletContext接口用来标识Servlet上下文,ServletContext对象可以被web应用程序...
  • apache tomcat crack

    2016-12-02 10:26:31
    apache tomcat crack是一款弱口令检测工具,供网络安全测试使用,不得用于非法用途,否则后果自负。
  • 使用Tomcat Native提升Tomcat IO效率

    万次阅读 热门讨论 2020-12-11 22:41:39
    IO有很多种,从最开始的Block IO,到nonblocking IO,再到IO多路复用和异步IO,一步一步的将IO的性能提升做到极致。 今天我们要介绍一下怎么使用Tomcat Native来提升Tomcat IO的效率。
  • Tomcat的目录结构以及其用途

    千次阅读 2015-11-05 13:21:12
    /bin 存放启动和关闭tomcat的脚本文件 /common/lin  存放Tomcat服务器及所有Web应用程序都可以访问的jar文件 /conf 存放Tomcat服务器的各种配置未见,其中包括server.xml(Tomcat的主要配置文件)、tomcat-...
  • Tomcat默认页面修改

    千次阅读 2020-01-07 20:29:23
    一、 Tomcat介绍 Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是多的场合下被普遍使用,是开发和调试jsp程序的首选 可以这样认为,当一台服务器配置好...
  • tomcat长连接、短连接配置及用途

    千次阅读 2015-03-10 10:03:47
    1.WEB应用有很多,下面就两个典型的应用(管理页面和接口服务)做对比。  管理页面:多涉及到用户的登录和长时间的频繁操作处理,这些操作都集中在一个session中,建议采用长连接;... TOMCAT长短连接配置,主...
  • iis,apache,tomcat的区别和用途

    千次阅读 2018-10-19 16:40:29
    iis和apache二者只能作web服务器(iis是m$出品的闭源产品,apache是apache.org出品的开源产品,性能好一点),而tomcat除过做web服务器外,还可以作应用服务器。 所谓应用服务器(App Server),这里主要是为Java EE的...
  • Tomcat1099端口占用问题

    2020-08-28 21:52:24
    cmd解决端口冲突问题 按住win + r 键 输入cmd ,进入终端 依次输入以下两行命令并执行 1、查找所有端口为1099的进程 netstat -ano | findstr 1099 2、结束端口为1099的进程 taskkill -f -pid 1099 ...
  • Eclipse配置tomcat服务器及tomcat简介

    千次阅读 多人点赞 2019-05-20 09:42:46
    一、手动配置tomcat到eclipse tomcat的压缩包资源可以去资源包中下载。(win32和win64都有) 1、 打开eclipse–>Window–>Preferences,按下图步骤选择: 2、 博主给的资源是tomcat7.0版的,所以这里选择配置...
  • Tomcat(一) Tomcat是什么:Tomcat与Java技术 Tomcat与Web应用 以及 Tomcat基本框架及相关配置 Tomcat是一个被广泛使用的Java WEB应用服务器,我们有必要对它有足够的了解。下面将认识Tomcat: 1、先来了解Tomcat与...
  • tomcat入门详解

    2019-06-05 14:46:47
     Tomcat是 Apache的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。 Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器. 在中小型系统和并发访问用户...
  • /bin 存放启动和关闭tomcat的脚本文件 /common/lin 存放Tomcat服务器及所有Web应用程序都可以访问的jar文件 /conf 存放Tomcat服务器的各种配置未见,其中包括server.xml(Tomcat的主要配置文件)、tomcat-user.xml...
  • Tomcat7.0浅析

    千次阅读 2018-12-27 11:01:19
    Tomcat浅析Tomcat目录结构Tomcat启动分析 Tomcat服务器是一个免费的可放源代的Web应用服务器,它是 Apache软件些金会(Apache Software Foundation)的 Jakarta项目中的一个核心项目,由Apache、sun和其他一些公司及...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,161
精华内容 10,064
关键字:

tomcat用途