zoukankan      html  css  js  c++  java
  • tomcat快速入门

    简介                                  

    Tomcat 是什么

    Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。

    由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

    web服务器、web容器、应用程序服务器                    

    web服务器用于提供web服务,要求能解析http协议,通常认为提供静态内容的服务器是web服务器。如apache httpd、nginx等。

    对于java而言,web容器是能提供servlet容器的服务器,它们是等价的概念。常见的有tomcat、weblogic、websphere、jboss。其中tomcat只提供servlet容器,它们在功能上是等价的。除tomcat外,后面3种web容器还提供除servlet容器外的EJB容器,专用于大型分布式程序开发。

    应用程序服务器是用于提供应用服务的服务器。这是业务逻辑上的概念划分。更具体一点的说,它提供WEB容器(servlet容器)、EJB容器以及其他功能。

    它们之间的关系和功能大致如下:web服务器提供web服务,主要处理http请求并响应给客户端,并可以将动态请求委托给其他程序,如cgi脚本、jsp脚本、asp脚本等进行处理;web容器即servlet容器主要负责处理基于http请求的动态jsp内容;EJB容器主要提供和后端数据库服务、其他服务进行交互的功能;应用服务器通常来说包括servlet容器或EJB容器,它们都运行于支持Java的应用服务器中,因此tomcat/weblogic/websphere/jboss都算是应用服务器。

    tomcat体系结构                              

    tomcat是jdk+servlet(严格地说是+jsp)实现的精简版的java ee,由于它只在jdk的基础上附加了jsp和servlet类库,所以它的应用范围主要是web应用。tomcat项目目前由apache软件基金会维护。

    它是一种应用程序服务器,只提供servlet容器,同时还提供apache解析静态HTML,只不过之它的处理能力不如独立的apache服务器。类似的应用程序服务还有websphere/weblogic/jetty/resin/jboss等,它们都是在jdk基础上附加各种类库实现不同程度的java ee(tomcat=jdk+servlet)。

    对于tomcat来说,它高度模块化,通过各个组件实现各种功能。它的体系结构如下图所示:

     

    其中:

    • server是顶级类,一个server算是一个tomcat实例,在此层次中可定义tomcat服务的监听端口。
    • service是server下的子组件,用于封装绑定connector和containor,并为它们提供一个名称属性。有了service就可以提供相关的服务,如监听TCP连接请求、处理http请求。注意server是管理整个tomcat实例的层次,它和提供服务没有关系。
    • connector是连接器,定义http协议(默认)以及该协议的监听端口。连接器用于接收客户端请求并将containor处理的数据返回给客户端
    • containor称为容器,它和connector连接器进行绑定。该容器内有4个子容器,包括:engine容器、host容器、context容器、Wrapper容器。容器用于分析、处理请求,并构建响应给connector以发送给客户端。它和connector是tomcat的心脏组件。
    • engine容器定义servlet引擎,用于定义引擎的名称、默认的虚拟主机。引擎用于分析http请求并将请求转发给对应的虚拟主机。
    • host容器用于定义虚拟主机。
    • context容器用于定义webapp,一个context定义一个webapp。它是真正管理servlet容器的层次。
    • wrapper容器对应的是真正的servlet容器,一个wrapper代表一个servlet,它负责管理一个Servlet,包括的Servlet的装载、初始化、执行以及资源回收。Wrapper是最底层的容器,一个context只能包含一个wrapper。在配置文件中,无法配置该容器的属性。

    还有一些其他组件,如session管理组件、JMX等。

     一个server可以有多个service。一个service可以有多个connector和唯一的containor。containor是容器类,从containor层次开始,真正进入servlet容器相关的过程它包含了唯一的engine容器,engine容器中包含了一个或多个host容器,host容器中包含了一个或多个context容器,context容器中包含了唯一的wrapper。它们的组织结构大致如下:

    <server>
        <service>
            <connector />
            <engine>
                <host>
                    <context />
                    <context />
                </host>
                <host>
                    <context />
                </host>
            </engine>
        </service>
    
        <service>
             ......
        </service>
    </server>

    安装tomcat                      

     tomcat依赖于jdk,所以需要先安装jdk。tomcat和jdk版本之间存在对应关系,应该考虑好要安装哪个版本的jdk以及哪个版本的tomcat。官方给出的对应关系网址为:https://tomcat.apache.org/whichversion.html。以下是到tomcat 9.x版本和jdk的对应表。

    1.安装JAVA:

    [root@localhost ~]# tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local/
    [root@localhost ~]# cd /usr/local/
    [root@localhost local]# ln -sv jdk1.8.0_191/ jdk
    "jdk/jdk1.8.0_191" -> "jdk1.8.0_191/"

    2.配置环境变量:

    [root@localhost local]# cat /etc/profile.d/jdk.sh 
    JAVA_HOME=/usr/local/jdk
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME PATH
    [root@localhost local]# chmod o+x /etc/profile.d/jdk.sh 
    [root@localhost local]#  /etc/profile.d/jdk.sh

    3.查看java版本。

    [root@localhost local]# ln -sv /usr/local/jdk1.8.0_191/jre/bin/java /usr/local/bin
    "/usr/local/bin/java" -> "/usr/local/jdk1.8.0_191/jre/bin/java"
    [root@localhost local]# java -version
    java version "1.8.0_191"
    Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

    4.安装tomcat:

    [root@localhost ~]# tar xf apache-tomcat-8.5.35.tar.gz -C /usr/local/
    [root@localhost ~]# cd /usr/local/
    [root@localhost local]# ln -sv apache-tomcat-8.5.35/ tomcat
    "tomcat" -> "apache-tomcat-8.5.35/"

    5.配置环境变量:

    [root@localhost local]# vi /etc/profile.d/tomcat.sh
    CATALINA_BASE=/usr/local/tomcat
    PATH=$CATALINA_BASE/bin:$PATH
    export PATH CATALINA_BASE
    [root@localhost local]# chmod 777 /etc/profile.d/tomcat.sh 
    [root@localhost local]# /etc/profile.d/tomcat.sh

    6.查看tomcat版本状态:

    [root@localhost local]# cd /usr/local/tomcat/bin/
    [root@localhost bin]# ./version.sh
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/local
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Server version: Apache Tomcat/8.5.35
    Server built:   Nov 3 2018 17:39:20 UTC
    Server number:  8.5.35.0
    OS Name:        Linux
    OS Version:     3.10.0-693.el7.x86_64
    Architecture:   amd64
    JVM Version:    1.8.0_191-b12
    JVM Vendor:     Oracle Corporation

    7.启动tomcat

    [root@localhost bin]# ./startup.sh 
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/local
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.
  • 相关阅读:
    元素绑定与非元素绑定
    窗口之间的交互,windows和自定义的窗口集合
    e.which
    prop()和attr()
    web动画
    $.proxy()和$.makeArray()
    匿名自执行函数报错
    页面适配
    gulp
    伪元素和伪类
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12031288.html
Copyright © 2011-2022 走看看