【tomcat知识点和部署】

news2024/11/8 15:06:16

文章目录

  • 一、tomcat概述
    • 1.1 tomcat的介绍
    • 1.2 tomcat的特点
  • 二、tomcat核心组件
    • 2.核心组件的介绍
    • 2.1 Web容器
    • 2.2 servlet容器
    • 2.3 JSP容器
    • 2.4 Tomcat核心组件的请求方式(交互方式)
      • 2.4.1 Web容器
      • 2.4.2 JSP容器
      • 2.4.3 serverlet容器
      • 2.5 Tomcat处理请求(内部数据流向图)
    • 3. Tomcat的功能组件结构
    • 3.1 Connector
    • 3.2 Container
    • 3.3 Service
    • 4.Container 结构分析(包含了 4 个子容器)
      • 4.1 Engine
      • 4.2 Host
      • 4.3 Context
      • 4.4 Wrapper
    • 5.Tomcat 请求过程
    • 5.1 Tomcat 请求过程描述
    • 6.Tomcat容器和功能组件
  • 三 tomcat部署
    • 1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
    • 2.安装JDK
    • 3.设置JDK环境变量
    • 4.测试jdk是否安装成功
    • 5.安装启动Tomcat
    • 6.优化tomcat启动速度
    • HTTP 请求过程
  • 总结

一、tomcat概述

1.1 tomcat的介绍

(1)免费的、开放源代码的web应用服务器。

(2)主要处理的是动态页面(做一个运行后端的程序)可以处理静态页面,处理效果不及apache和nginx。

(3)Tomcat 是基于 Java 技术的,可以在多个操作系统上运行。

(4)属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合普遍使用,是开发和调试JSP程序的首选。

1.2 tomcat的特点

(1)易于配置和管理:Tomcat 的配置和管理都非常简单,并且提供了很多方便的工具来进行配置和管理,如管理控制台、命令行工具等。

(2)良好的兼容性:Tomcat 支持使用多种开发框架和编程语言开发 Java Web 应用,如 Java Servlet、Java Server Pages、Java Expression Language 和 Java WebSocket 技术,以及使用 Spring、Hibernate 等开源框架进行开发。

(3)高性能和可靠性:Tomcat 使用了面向多线程的设计,可以处理大量的并发请求,同时它还具有较高的稳定性和可靠性。

二、tomcat核心组件

在这里插入图片描述

2.核心组件的介绍

2.1 Web容器

(1)作用

完成web服务器的功能

(2)tomcat web应用服务的过程

web通过http或https来访问一个页面,页面会指向写的文件、
web容器封装了一组文件,用来集中化管理一组组员的对象,处理一个web动态,就是处理一个web动态页面(web可以指多个文件)

2.2 servlet容器

(1)什么是servlet

Servlet 是Java Servlet 的简称,可以理解为是一个服务连接器,是用 Java编写的服务器端程序,具有独立于平台和协议的特性, 简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建

(2)作用

做一个链接,对接各个接口的是Catalina来执行

2.3 JSP容器

(1)什么是 JSP

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

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

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

(2)作用

用于JSP动态网页翻译成servlet代码

只是用于安装定影的规则,格式来显示静态页面

index.php是给php用的
index.jsp是给tomcat用来
html是给nginx用来
(3)动态页面交互的过程和作用

可以让用户进行交互的一种web的页面,后台(后端)进行交互,index.jsp到tomcat用的Java环境和数据交互

总结:

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

2.4 Tomcat核心组件的请求方式(交互方式)

2.4.1 Web容器

(1)接受、响应请求

(2)展示动态页面

(3)对外接受请求,访问入口和出口

2.4.2 JSP容器

(1)翻译语言:将Java——servlet

(2)index.html——nginx可以直接展示index.php

(3)index.jsp——java环境——和数据库怎么进行交互,链接后段的过程(index.jsp——java类代码——就是执行对接后端的执行代码,所以我们需要在进行与用户交互时,将用户发出的请求、数据、传输到后端,但是index.jsp中的一些Java代码无法直接执行对接或者调用,需要先翻译成可以可直接执行的代码方式——格式serverlet代码格式)

2.4.3 serverlet容器

serverlet代码格式就是用JSP容器来处理

2.5 Tomcat处理请求(内部数据流向图)

在这里插入图片描述

用户访问数据经过nginx发送到web容器用index.php类型页面接收Java代码再到JSP容器将前面的index.jsp的代码翻译为servlet代码后交给servlet容器处理通过api接口调用数据库中的信息后再次回给用户。

3. Tomcat的功能组件结构

3.1 Connector

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

3.2 Container

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

3.3 Service

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

4.Container 结构分析(包含了 4 个子容器)

每个 Service 会包含一个 Container 容器。在 Container 内部包含了 4 个子容器:
4个子容器的作用分别是:

4.1 Engine

相当于引擎,用来管理多个虚拟主机,一个 Service 最多只能有一个 Engine

4.2 Host

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

4.3 Context

代表一个 Web 应用,包含多个 Servlet 封装器

4.4 Wrapper

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

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

5.Tomcat 请求过程

开发java——写代码——编译jar——打包(war 、jar)
运维放在tomcat并行放在/webapps 当启动tomcat时会自动把包解压,解压成项目目录

5.1 Tomcat 请求过程描述

1、用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;
2、Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应;
3、请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑、数据存储等。
4、执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,并通过 Connector 返回给客户端。

6.Tomcat容器和功能组件

在这里插入图片描述
tomcat可以作为运行Java代码环境,只要把Java代码(.class可执行的类文件)或者war包或jar包放在/webapps中,那么在tomcat启动时,就可以解压并运行放在/webapps中的这些应用(只需要修改配置文件)

三 tomcat部署

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

1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下


jdk-8u371-linux-x64.rpm
apache-tomcat-8.5.16.tar.gz 
 
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2.安装JDK

cd /opt
#先安装jdk
rpm -ivh jdk-8u371-linux-x64.rpm 
#查看Java的版本信息
java -version
rpm -qpl jdk-8u371-linux-x64.rpm 

在这里插入图片描述

3.设置JDK环境变量

#使用脚本设置jdk的环境变量
vim /etc/profile.d/java.sh
#指定安装的包所在的路径家目录
export JAVA_HOME=/usr/java/jdk1.8.0-x64
#将 CLASSPATH 变量设置为当前目录、$JAVA_HOME/lib/tools.jar 和 $JAVA_HOME/lib/dt.jar 所代表的 Java 类文件搜索路径。
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#指定变量,放入执行文件
export PATH=$JAVA_HOME/bin:$PATH

在这里插入图片描述

#读取脚本
source /etc/profile.d/java.sh
java -version

在这里插入图片描述

4.测试jdk是否安装成功


首先使用文本工具编写java源代码,比如 hello.java ;
在命令行中,输入命令:javac hello.java,对源代码进行编译,生成 class 字节码文件;
编译完成后,如果没有报错信息,输入命令:java hello,运行 class 字节码文件,由 JVM 对字节码进行解释和运行,打印 “hello World”。
 
 
vim hello.java
#类名、接口名命令:英文大小写字母、数字字符、$和_,不能使用关键字和数字开头;
一个单词命名时第一个单词的首字母要大写;多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)
public class hello {			
  public static void main(String[] args){
    System.out.println("Hello world!");
  }
}

javac hello.java
java hello

在这里插入图片描述
在这里插入图片描述

5.安装启动Tomcat

cd /opt
tar zxvf apache-tomcat-8.5.16.tar.gz 
mv apache-tomcat-8.5.16 /usr/local/tomcat
#启动tomcat #
#后台启动
/usr/local/tomcat/bin/startup.sh 
或
/usr/local/tomcat/bin/catalina.sh start
	
#前台启动
/usr/local/tomcat/bin/catalina.sh run		

netstat -natp | grep 8080

在这里插入图片描述

浏览器访问Tomcat的默认主页 http://192.168.186.10:8080/

在这里插入图片描述

6.优化tomcat启动速度

第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。

vim /usr/java/jdk1.8.0-x64/jre/lib/security/java.security
--117行--修改
securerandom.source=file:/dev/urandom

# 关闭Tomcat 应用程序脚本。
/usr/local/tomcat/bin/shutdown.sh 
#开启Tomcat 应用程序脚本。
/usr/local/tomcat/bin/startup.sh 
#查看文件的详情
ll /usr/local/tomcat/

在这里插入图片描述

HTTP 请求过程

(1)Connector 连接器监听的端口是 8080。由于请求的端口和监听的端口一致,连接器接受了该请求。
(2)因为引擎的默认虚拟主机是 www.blue.com,并且虚拟主机的目录是webapps。所以请求找到了 tomcat/webapps 目录。
(3)访问的路径为根路径,URI 为空,即空是 Web 程序的应用名,也就是 context。此时请求找到 /usr/local/tomcat/webapps/blue 目录,解析 index.jsp 并返回。

总结

(1)tomcat是一种web应用服务
(2)tomcat所处的位置一般来说是在nginx之后,作为动态处理的服务
(3)tomcat作用:作为Java类语言开发的应用执行后和持续运行的平台
(4)tomcat的核心组件:web容器、JSP容器、servlet容器
(5)tomcat的工作流程:nginx的80端口到8080是由connector连接器监听,给予容器的engine引擎——host项目的web apps目录中,对应项目的一个代码——通过context传递代码,代码连接——应用的运行场景,最后执行servlet代码(动态请求任务),最后要么对应数据库,要么直接返回给nginx,直接给用户看
在做服务部署与虚拟机主配置的时候遇到服务端口没起来主要的排错思路有:
防火墙的问题——配置JDK环境变量的(vim /etc/profile.d/java.sh)中的路径是否正确、代码是否正确——是否启动了配置文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第六章 linux调试器——gdb的使用

第六章 linux调试器——gdb的使用 一、前提1、debug与release2、gdb的安装 二、常用调试指令1、开始调试2、代码显示3、断点设置4、代码执行5、信息监控6、退出调试 一、前提 1、debug与release 程序最终的发布方式分成两种&#xff0c;一种是debug模式&#xff0c;一种是rel…

华为OD机试真题 Python 实现【机器人活动区域】【2023Q1 200分】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 现有一个机器人&#xff0c;可放置于 M N的网格中任意位置&#xff0c;每个网格包含一个非负整数编号。当相邻网格的数字编号差值的绝对值小于等于 1 时&a…

redis-单节点安装

daemonize yes port 6379 bind 0.0.0.0 requirepass 123456 save 3600 1 300 100 60 10000dir /usr/local/redis dbfilename dump.rdb logfile redis.log pidfile redis.pid##save 3600 1 300 100 60 10000 ##3600秒(一小时),至少有一个值的话,会进行存盘 ##300秒(五分钟),至少…

探索性测试: 工具和方法的综合应用

1、前言 2、工具的使用 1、测试管理工具 2、缺陷跟踪工具 3、测试自动化工具 4、探索性测试工具 5、代码覆盖率工具 6、日志分析工具 7、网络抓包工具 8、数据库查询工具 9、并发和负载测试工具 10、安全测试工具 11、API测试工具 12、数据生成工具 13、异常处理和边界测试工具…

server2012远程桌面RDP120过期后修改

运行regedit 进入 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ RCM \ GracePeriod &#xff0c;选中 GracePeriod 重启电脑Ok

572. 另一棵树的子树

另一棵树的子树 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isSubtree(self, root: Optional[Tre…

ROS 编码器转Odom

双轮差速模型 移动距离 delta_dist (encoder_right encoder_left)/linesNum * circumference / 2; 旋转角度 Delta_th (float)(encoder_right - encoder_left) / wheel_track; 将移动距离转换到车体坐标系 delta_x cos(delta_th) * delta_dist; delta_y -sin(delta_th) * …

前端页面优化策略

目录 1 为什么要优化2 优化方案3 加载策略优化3.1 script执行时机3.2 预加载资源prefetch 和 preloaddns-prefetch 和 preconnect 4 骨架屏4 资源请求优化4.1 图片懒加载及异步解码方案 1 为什么要优化 从用户角度看&#xff0c;优化能够让页面加载得更快、对用户操作响应更及…

领域事件驱动DDD(一) 值对象以及实体

对领域事件驱动的一些知识的梳理&#xff08;以下内容是从内到外进行梳理&#xff09; 值对象&#xff1a;一个没有标识符的对象。 值对象通常不会被修改&#xff0c;而是通过创建新的值对象来表示不同的状态。 没有自己的生命周期&#xff0c;它们随着所属的实体或聚合根的…

自动化测试-Selenium

目录 什么是自动化测试 Selenium介绍 Selenium是什么 Selenium特点 Selenium工作原理 SeleniumJava环境搭建 1.下载chrome浏览器,查看版本号. 2.下载chrome浏览器驱动 3.配置环境变量 4.创建java项目,在pom文件中添加依赖 5. 验证环境是否搭建成功 Selenium常用API…

libevent实践08:实现定时器第二季

简介 获取libevent的版本号字符串 /**Get the Libevent version.Note that this will give you the version of the library that yourecurrently linked against, not the version of the headers that youvecompiled against.return a string containing the version numbe…

利用RabbitMQ实现消息投递削峰填谷

目录 异步和同步如何选择 异步线程 同步收发消息 一、导入依赖库 二、创建RabbitMQ配置类 三、创建消息任务类 异步和同步如何选择 依靠多线程&#xff0c;Java代码可以同步执行也可以异步执行 RabbitMQ提供了同步和异步两种收发消息模式 我们采用 Java异步线程 MQ同步…

MongoRepository

一、介绍 MongoRepository是一个接口,与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个MongoDB集合中的文档数据进行增删改查,示例如下所示: import org.bson.types.ObjectId; import org.springframework.data.mongodb.repository…

[数据结构 -- 手撕排序第一篇] 插入排序

目录 1、常见的排序算法 2、插入排序的思路 2.1 基本思想 2.2 直接插入排序 2.2.1 单趟排序的思路 2.2.2 单趟排序代码实现 3、插入排序代码 4、插入排序打印测试 5、插入排序的时间复杂度 5.1 最坏情况 5.2 最好情况 6、直接插入排序的特性总结 1、常见的排序算法 2、插入排序…

SpringMVC (二) 第一个MVC程序

学习回顾&#xff1a;SpringMVC &#xff08;一&#xff09; 什么是SpringMVC Hello&#xff0c;SpringMVC 现在我们来看看如何快速使用SpringMVC编写我们的程序吧&#xff01; 一、配置版 1、新建一个Moudle &#xff0c; springmvc-02-hello &#xff0c; 添加web的支持&…

Spring面试题--AOP

什么是AOP&#xff0c;你们项目中有没有使用到AOP&#xff1f; AOP称为面向切面编程&#xff0c;用于将那些与业务无关&#xff0c;但却对多个对象产生影响的公共行为和逻辑&#xff0c;抽取并封装为一个可重用的模块&#xff0c;这个模块被命名为“切面”&#xff08;Aspect&a…

2024中山大学898水文地质与工程地质考研初试复习资料

C8260153[电子书]2024年中山大学898水文地质与工程地质考研精品资料 说明&#xff1a;本套资料由高分研究生潜心整理编写&#xff0c;高清电子书&#xff0c;考研推荐资料。 一、考研真题及重点名校真题 1.附赠重点名校真题 ①重点名校&#xff1a;水文地质学基础2010-2013…

魏副业而战:抖音图文带货玩法,月入5w+

我是魏哥&#xff0c;与其在家躺平&#xff0c;不如魏副业而战&#xff01; 最近魏哥一直在研究短视频带货&#xff0c;看了很多案例&#xff0c;发现了一些NB的账号。 说真的&#xff0c;视频带货真的可以认真的研究研究&#xff0c;不管是做直播&#xff0c;还是发视频&…

【C++11】左值引用 与 右值引用

定义 左值 / 左值引用 左值&#xff08;Lvalue&#xff09;&#xff1a; 左值是一个表示数据的表达式(如变量名或解引用的指针)&#xff0c;我们可以 对它取地址 可以对它赋值&#xff0c;左值可以出现赋值符号的左边&#xff0c;右值不能出现在赋值符号左边。定义时const修…

青少年机器人技术一级核心知识点:机械结构及模型(二)

随着科技的不断进步&#xff0c;机器人技术已经成为了一个重要的领域。在这个领域中&#xff0c;机械结构是机器人设计中至关重要的一部分&#xff0c;它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说&#xff0c;了解机械结构的基础知识&#xff0c;掌…