Tomcat 服务
2023-07-26 18:24:24 170浏览
一.什么是 tomcat 服务 ?
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
二.tomcat的组件构成
Tomcat由一系列的组件构成,其中核心的组件有三个:
(1) web容器:完成web服务器的功能。
(2) servlet容器:名字为catalina,用于处理Servlet代码。
(3 ) JSP容器:用于将JSP动态网页翻译成Servlet代码。
因此Tomcat是web应用服务器,也是一个Servlet/JSP容器。Tomcat作为 Servlet容器,负责处理客户请求,把请求传送给servlet,并将servlet的响应传送回给客户。
什么是servlet ?
Servlet 是 Java Servlet 的简称,可以理解为是一个服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性,简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。
什么是JSP?
JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用JSP 标签在HTML,网页中插入Java代码。标签通常以 <% 开头,以 %> 结束。
JSP是一种Java servlet,主要用于实现Java web 应用程序的用户界面部分。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
Tomcat 功能组件结构:
Tomcat的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector,和负责处理请求的容器Container ; 其中连接器和容器相辅相成,一起构成了基本的 web服务Service。每个Tomcat服务器可以管理多个Service。Service组件用来管理、控制线程连接
Service: 对外提供的web服务。主要包含Connector和 Container两个核心组件,以及其他功能组件。Tomcat可以管理多个 Service,且各Service 之间相互独立
Conector: 负责对外接收和响应请求。监听http请求、发给Engine组件; 它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
Container: 负责对内处理业务逻辑。其内部由 Engine、Host、Context和wrapper 四个容器组成,用于管理和调用Servlet相关逻辑。
Engine组件:处理connector收到的http请求
Host组件:虚拟主机、设有网页根目录
Context组件:设置path路径, 匹配请求资源名
Container 结构分析
每个Service 会包含一个Container容器。在Container内部包含了4个子容器:4个子容器的作用分别是:
(1) Engine:引擎,用来管理多个虚拟主机,一个Service最多只能有一个Engine:
( 2) Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点;
( 3) Context:代表一个 web 应用,包含多个Servlet封装器;
(4) wrapper:封装器,容器的最底层。每一Wrapper封装着一个Servlet,负责对象实例的创建、执行和销毁功能。
Engine、Host、Context和 wrapper,这四个容器之间属于父子关系。
容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个web应用。每个web应用会有多个Servlet封装器
Tomcat请求过程:
1、用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的 Connector获得;
2、Connector 把该请求交给它所在的Service 的 Engine (Container)来处理,并等待Engine的回应;
3、请求在Engine、Host、Context和Wwrapper 这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。
4、执行完之后的请求响应在Context、Host、Engine容器之间层层返回,最后返回给Connector,并通过Connector 返回给客户端。
详细解释下上面的这张图
1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Connector获得
2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应
3、Engine获得请求localhost/test/index.jsp,匹配到名为localhost的虚拟主机Host
4、Host匹配到路径为/test的Context
5、path=“/test”的Context获得请求/index.jsp,匹配到URL 格式为*.jsp的Servlet,对应于JspServlet类,运行代码逻辑
6、Context把执行完之后的HttpServletResponse对象返回给Host
7、Host把HttpServletResponse对象返回给Engine
8、Engine把HttpServletResponse对象返回Connector
9、Connector把HttpServletResponse对象返回给客户Browser
java 环境
编程语言
编程语言分为编译型语言和解释型语言
编译型语言
使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
特点
在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
总结
一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;
与特定平台相关,一般无法移植到其他平台;
现有的C、C++、Objective、 java 等都属于编译型语言。
解释型语言
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。
特点
解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。
总结
解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低;
只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;
Python、php、ruby、等属于解释型语言。
Java 环境
实现
运行的java命令封装在JVM(java虚拟机)中,运行.class文件
运行时除了JVM,还需要文件执行时的类库lib
JRE=JVM+运行时类库
方便Java开发者学习,可以调用一些源码的类库
JDK=bin(javac)+ jre + lib+ include(交互的头文件信息)
所以安装JDK即可实现 Java 环境
设置 JDK 环境变量
在安装tomcat前设置Java环境变量
Java平台
JVM(Java虚拟机) + 类库 = JRE(Java运行环境)
JRE + 开发库 = JDK
什么是JDK ?
JDK 是Java开发工具包;若想要得到一个 Java 环境,只需要安装 JDK 即可
安装 JDK
#一般情况下,系统默认安装了 JDK ,我们先查看默认安装的 JKD 版本是否符合要求;如果不符合要求,那我们就要安装指定版本的 JDK
1、查看 JDK 的版本信息
[root@zerbufan ~]# java -version #查看版本信息
openjdk version "1.8.0_181" #版本信息
OpenJDK Runtime Environment (build 1.8.0_181-b13) #OpenJDK运行时环境
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) #64位服务器虚拟机
2、安装源码包的 jdk
[root@zerbufan /]# tar -zxf ./jdk-11.0.11_linux-x64_bin.tar.gz #将 jdk的压缩包解压
[root@zerbufan /]# cp -a ./jdk-11.0.11 /usr/local/jdk11 #解压后将 解压的目录复制到 /usr/local/ 目录下 ;并修改目录名称
只需要复制改名就行,不需要其他的安装
源码包安装的 JDK 执行时需要使用绝对路径去执行,比较麻烦。我们可以通过设置环境变量,将 命令添加在 环境变量中
3、修改环境变量,让 Java 命令执行起来简单一点
[root@zerbufan ~]# vim /etc/profile #修改环境变量,将 Java 的命令添加到环境变量中
export JAVA_HOME=/usr/local/jdk11
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$JAVA_BIN:$PATH
[root@zerbufan ~]# . /etc/profile # 执行 . 或者 source 重新识别配置文件
4、修改环境变量后 执行 Java 命令查看版本信息
[root@zerbufan ~]# java -version
java version "11.0.11" 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)
5、演示 Java 代码的编译和运行
$ vim HelloWord.java #创建 Java 源代码文件,在文件内编写内容用于测试
public class HelloWord{
public static void main(String[] args) {
System.out.println("hello word~");
}
}
[root@zerbufan ~]# javac HelloWord.java #编译java源代码成中间语言
[root@zerbufan ~]# java HelloWord #运行Java代码
hello word~ #运行结果
安装 tomcat
tomcat 服务参数
软件名:apache-tomcat
服务名:java
端口号:8080、8005、8009
配置文件:PREFIX/conf/server.xml
网页文件:PREFIX/webapps
日志文件:PREFIX/logs
启动命令:PREFIX/bin/Catalina.sh start | stop| restart
⚠:这里的PREFIX =/usr/local/tomcat9
端口
配置需要3个端口才能启动、安装完默认启用:
shutdown端口:8005
负责监听关闭命令
http协议访问端口:8080
负责建立HTTP连接
ajp协议访问端口:8009
负责和其他服务建立连接、集成时使用
开始安装 tomcat
1、解压 tomcat 的压缩包
[root@zerbufan /]# tar -zxf ./apache-tomcat-9.0.48.tar.gz
2、将绝解压后的目录复制到 指定的位置并改名(一般以服务名和版本号命名)
[root@zerbufan /]# cp -a ./apache-tomcat-9.0.48/ /usr/local/tomcat9
3、启动tomcat 服务
[root@zerbufan /]# /usr/local/tomcat9/bin/catalina.sh start #使用绝对路径启动服务
Using CATALINA_BASE: /usr/local/tomcat9 #使用的根目录
Using CATALINA_HOME: /usr/local/tomcat9 #使用的家目录
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp #临时文件存储的位置
Using JRE_HOME: /usr/local/jdk11 #Java运行环境的家目录
Using CLASSPATH: /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar #使用的环境变量
Using CATALINA_OPTS:
Tomcat started. #服务启动成功
访问测试
tomcat 项目部署
重启服务
[root@zerbufan ~]# /usr/local/tomcat9/bin/catalina.sh stop
[root@zerbufan ~]# /usr/local/tomcat9/bin/catalina.sh start
访问验证
自定义配置
修改 tomcat 的配置文件,可以自定义端口
Connector port="8080" #可以修改端口,但是tomcat服务修改端口时 不能只修改监听HTTP连接的端口
Server port="8005" #一定要和监听关闭命令的端口一起修改
修改后重启服务
$ /usr/local/tomcat9/bin/catalina.sh stop
$ /usr/local/tomcat9/bin/catalina.sh start
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论