• Web服务(10)——Tomcat服务


    Web服务(10)——Tomcat服务

    一、Tomcat简介

    Tomcat是Apache软件基金会(Apache Software Foundation)的jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。

    Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普追使用,是开发和调试JSP程序的首选。

    Tomcat官网:http://tomcat.apache.org

    二、Tomcat核心组件

    Tomcat和Nginx、Apache(httpd)、ghttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式,不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器,Java容器还有resin.weblogic等。

    Tomcat由一系列的组件构成,其中核心的组件有三个:

    (1)web容器:完成web服务器的功能。

    (2)Servlet容器:名字为catalina,用于处理Servlet代码。

    (3)JSP容器:用于将JSP动态网页翻译成Servlet代码。

    因此Tomcat是Web应用服务器,也是一个Servlet/JSP容器。Tomcat作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户。

    什么是servlet?

    servlet 是javaservlet的简称,可以理解为是一个服务连接器,使用java编写的服务器端程序,具有独立于平台和协议的特性。

    简单的理解:servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。

    什么是JSP?

    JSP全称Jave Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入java代码。标签通常以<%开头,以%>结束。

    JSP是一种java servlet,主要用于实现java web应用程序的用户界面部分。

    JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

    各组件功能详解

    1.web容器

    • 接收、响应请求

    • 展示动态页面的入口和出口

    • web通过http协议来访问一个动态页面文件(index.jsp),web容器中封装了一组这样的文件,可以通过集中化管理各组

    2.JSP容器

    • 翻译java——→servlet

    安装定影的规则:index.php—→php、index.jsp—→tomcat、html—→nginx。这里一般指index.jsp因为其中的java代码一般无法直接被调用,所以需要使用servlet先进行翻译。

    三、Tomcat功能组件结构

    Tomcat的核心功使有两个,分别是负责接收和反馈外部请求的连接器Connector,和负责处理请求的容器Container

    其中连接器和容器相辅相成,一起构成了基本的web服务Service。每个Tomcat服务器可以管理多个Service。

    Connector

    负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容
    器处理后的结果响应给外界。

    Container

    负责对内处理业务逻辑。其内部由Engine、Host、Context和Wrapper四个容器组成,用于管理和调用Servlet相关逻辑。

    Container结构分析:

    每个Service会包含一个Container容器,在Container内部包含了4个子容器:

    (1)Engine:引擎,用来管理多个虚拟主机,一个Service最多只能有一个Engine

    (2)Host:代表一个虚拟主机,也可以叫站点,通过配置Host就可以添加站点

    (3)Context:代表一个web应用,包含多个Servlet封装器:

    (4)Wrapper:封装器,容器的最底层,每一个Wrapper封装着一个Servlet,负责对象实例的创建、执行和销吸功能。

    Engine、Host、Context和Wrapper,这四个容器之间属于父子关系。容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个Web应用。每个Web应用会有多个Servlet封装器。

    Service

    对外提供的Web服务。主要包含Connector和Container两个核心组件,以及其他功能组件。Tomcat可以管理多个Service,且各Service之间相互独立。

    tomcat处理请求的过程

    用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的Connector获得:

    Connector把该请求交给它所在的Service的Engine(Container)来处理,并等待Engine的回应:

    请求在Engine、Host、Context和Wrapper这四个容器之间层层调用,最后在Servlet中执行对应的业务逻辑、数据存储等。

    执行完之后的请求响应在Context、Host、Engine容器之间层层返回,最后返回给Connector,并通过Connector返回给客户端。

    四、Tomcat基础JDK

    jDK是java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了java的运行环境JVM+jva系统类库)和JAVA工具。

    JDK包含了一批用于java开发的组件,其中包括:

    javac:编译器,将后缀名为.java的源代码编译成后缀名为“.class”的字节码
    java:运行工具,运行.class的字节码
    jar:打包工具,将相关的类文件打包成一个文件
    javadoc:文档生成器,从源码注释中提取文档,注释需匹配规范
    jdb debugger:调试工具
    jps:显示当前java程序运行的进程状态
    javap:反编译程序
    appletviewer:运行和调试applet程序的工具,不需要使用浏览器
    javah:从Java类生成c头文件和c源文件。这些文件提供了连接胶合,使Java和c代码可进行交互。
    javaws:运行JNLP程序
    extcheck:一个检测jar包冲突的工具
    apt:注释处理工具
    jhat:java堆分析工具
    jstack:栈跟踪程序
    jstat:JVM检测统计工具
    jstatd:jstat守护进程
    jinfo:获取正在运行或前溃的java程序配置信息
    jmap:获取java进程内存映射信息
    id们j:IDL-to-Java编译器。将IDL语言转化为java文件
    po11 cytoo1:一个GUI的策略文件创建和管理工具
    jrunscript:命令行脚本运行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    JDK中还包括完整的JRE (Java Runtime Environment),Java运行环境,也被称为private runtime,包括了用于产品环境的各种库类,如基础类库rt.jar,以及给开发人员使用的补充库,如国际化与本地化的类库、IDL库等等。

    JDK中还包括各种样例程序,用以属示java API中的各部分。

    JDK下载面页:https://www.oracle.com/java/technologies/downloads/

    五、Tomcat&JDK的部署

    在部署tomcat之前要安装好jdk,因为jdk是tomcat运行的必要环境。

    安装时选择tomcat软件版本要与程序开发使用的版本一致。jdk版本要和tomcat保持一致。需要提前将软件包放入系统中,内存需要2G以上。

    #查看centos版本
    [root@TTTTTTT ~]# cat /etc/redhat-release 
    CentOS Linux release 7.5.1804 (Core) 
    查看内核版本
    [root@TTTTTTT ~]# uname -a
    Linux TTTTTTT 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    [root@TTTTTTT ~]# getenforce 
    Enforcing
    [root@TTTTTTT ~]# setenforce 0
    [root@TTTTTTT ~]# systemctl stop firewalld
    #安装JDK
    [root@TTTTTTT ~]# cd /opt
    [root@TTTTTTT ~]# rpm -ivh jdk-8u201-linux-x64.rpm
    #设置环境变量
    [root@TTTTTTT ~]# vim /etc/profile
    [root@TTTTTTT ~]# source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    #添加以下三行到末尾
    #指定java安装目录
    export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
    #类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    #用于指定java系统查找命令的路径
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    CLASSPATH:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。

    dt.jar:是关于运行环境的类库,主要是可视化的swing的包。

    tools.jar:主要是一些jdk工具的类库,包括javac、java、javap(jdk自带的一个反编译工具)、javadoc等。

    JDK:java development kit(java开发工具)

    JRE:java runtime environment(java运行时环境)

    JVM:java virtuak machine(java虚拟机),使java程序可以在多种平台上运行class文件。

    #测试JDK是否安装成功
    [root@TTTTTTT ~]# java -version
    #安装tomcat
    [root@TTTTTTT ~]# tar zxvf apache-tomcat-9.0.16.tar.gz
    [root@TTTTTTT ~]# mv apache-tomcat-9.0.16 /usr/local/tomcat
    #设置环境变量
    [root@TTTTTTT ~]# echo 'export TOMCAT_HOME=/usr/local/tomcat'>> /etc/profile
    [root@TTTTTTT ~]# source /etc/profile
    #统一授权
    [root@TTTTTTT ~]# chown -R root:root  /usr/local/tomcat /usr/java/jdk1.8.0_201-amd64
    #开启tomcat服务
    [root@TTTTTTT ~]# /usr/local/tomcat/bin/startup.sh
    #关闭tomcat服务
    [root@TTTTTTT ~]# /usr/local/tomcat/bin/shutdown.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    END

  • 相关阅读:
    分享15个国家的独特国际商业习俗
    《Linux驱动:s3c2410/s3c2440 ts驱动分析 之二》
    Spring 中Bean的作用域有哪些?
    基于Java+SpringBoot+vue前后端分离小徐影城管理系统设计实现
    Socket套接字编程
    Jetson Nano2GB(TX2\NX\XAVIER)使用ffmpeg进行硬解码配置笔记
    七、Kafka-Kraft 模式
    网络营销中 SEO 的作用
    可以ping通,防火墙也关闭了,但是ssh无法登录解决方案
    go的数据类型
  • 原文地址:https://blog.csdn.net/tu464932199/article/details/126014996