Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。 一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。
运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。与CGI(公共网关接口)功能相类似。
一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。 JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
Tomcat 由一系列的组件构成,其中核心的组件有三个
- Web :容器完成 Web 服务器的功能
- Servlet :容器名字为 catalina,用于处理 Servlet 代码
- JSP 容器:用于将JSP 动态网页翻译成 Servlet 代码
Tomcat的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector,和负责请求的容器Container。
其中连接器和容器相辅相成,一起构成了基本的web服务server。每个Tomcat服务器可以管理多个server。
-Connector:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
-Container:负责对内处理业务逻辑。其内部由Engine、Host、Context和Wrapper四个容器组成,用于管理和调用Servlet相关逻辑。
-Serverlet:对外提供的web服务。主要包含Connector和Container两个核心组件,以及其他功能组件。Tomcat可以管理多个Service,且各Service之间相互独立
每个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应用会有多个service封装器。
1.用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的connector获得
2.connector把该请求交给它所在的service的Engine(container)来处理,并等待Engine的回应
3.请求在Engine、Host、Context和Wrapper这四个容器之间层层调用,最后在servlet中执行相应的业务逻辑、数据存储等
4.执行完之后的请求响应在Context、Host、Engine容器之间层层返回,最后返回给Connectop,并通过Connector返回给客户端
用户请求(访问80端口)——》
发送请求发送给tomcat——》
tomcat有一个端口在监听8080端口)
从8080端口进入流量的会被在此端口的线程监听到
给与我们的web容器进行处理(有index.html页面显示出来 从8080端口来时会有交互界面 会读取到index.jsp这种java代码)
但是java代码无法直接使用——》
需要利用到jsp容器
将index.jsp中的java的servlet代码进行翻译
servlet容器处理 通过catalina程序/脚本来处理从JSP容器这过来的servlet代码
并不是直接对接mysql数据库
而是直接对接用户的请求例如app中的某个功能模块
比方说看个人信息 servlet容器与app接是api进行对接(具体的URL)
数据流向最终会通过用户请求内容 去mysql数据库寻找相应的内容
最后返回给用户
用户请求(访问80端口)——》当请求需要通过8080端口进入时 需要通过connector连接器 客户端和服务单简建立连接 http1.1建立长连接(请求行、请求体、请求头、方式:get、post)连接进入后需要发送给引擎engine(web容器)
1、web容器进行接受响应请求
会有index.html可视页面显示出来
会读取到index.jsp这种java代码(java代码需要翻译为servlet格式)
但是java代码无法直接使用——》
2、需要利用到jsp容器
接受到请求时:将java时翻译成servlet
响应请求时servlet翻译成java代码——》
3、servlet容器处理 通过catalina程序/脚本来处理从JSP容器这过来的servlet代码(宏观)servlet代码简单来说就是具体执行动态任务的代码块需要把项目的代码块执行逻辑等等放在单独的一个目录中,同事有需要被tomcat所能加载这个就是webapps——》
webapps:默认的项目存放目录 (servlet容器需要和webapps需要进行连接需要用到一个核心组件 context)一般情况下会把这些war包和jsp这些包放在kgc-host这种目录下 当tomcat运行时会加载这些代码(最初的web容器中的代码需要获取路径——》jsp或者war寻找到kgc-host目录下的这些代码中间的过程就是整个数据走向 web中的jsp代码和下面项目块是由关联的)
三个项目块:
1、KGC-HOST 2、BENET-HOST 3、ACCP-HOST
目录 环境
注:java应用服务的执行、持续运行的平台(java应用每一个java应用都相当于是一个独立的项目存在的)
在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
将JDK、Tomcat安装包拖入或共享到/opt目录中
1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装JDK
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
桌面安装会默认安装jdk
3.设置JDK环境变量
vim /etc/profile.d/java.sh //也可以写在/etc/profile中,/etc/profile.d是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 //java的工作目录
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar //"."指当前目录环境,输出指定java所需的类文件
export PATH=$JAVA_HOME/bin:$PATH //输出重新定义的环境变量,$JAVA_HOME/bin:要在前面让系统优先识别
source /etc/profile.d/java.sh
java -version
4.安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
——启动tomcat——
可以先优化路径 :ln -s /usr/local/tomcat/bin/* /usr/local/bin/
//后台启动
/usr/local/tomcat/bin/startup.sh //standdown
或
/usr/local/tomcat/bin/catalina.sh start
//前台启动
/usrlocal/tomcat/bin/catalina.sh run
netstat -natp | grep 8080 //或grep java
5.访问浏览器