Tomcat

tomcat

Tomcat简介

tomcat是一个免费的,开放源代码的Web应用服务器,是Apache软件基金会项目中的一个核心项目,由Apache ,Sun和一些公司以及个人共同开发而成,深受Java爱好者的喜爱,是一款比较流行的web应用服务器。

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

  • web容器:完成web服务器的功能。
  • servlet容器:名字为catalina,用于处理Servlet代码。
  • 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。
**Conector: 负责对外接收和响应请求。**它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
**Container: 负责对内处理业务逻辑。**其内部由 Engine、Host、Context和wrapper 四个容器组成,用于管理和调用Servlet相关逻辑。
Service:对外提供的web服务。主要包含Connector和 Container两个核心组件,以及其他功能组件。Tomcat可以管理多个Service,且各Service 之间相互独立

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 返回给客户端。

常见的中间件

一般本地开发的话,小项目,或者是个人开发建议使用tomcat;

linux系统建议使用jetty或apache hpppd;

大型的项目就用JBOSS或webloigc;

大项目或者商业项目一般采用:weblgoic/webshere,其他的还有jboss、glasshfish等;

一些示例项目或者小项目常采用jetty;

tomcat , jboss, weblogic, websphere 一般项目tomcat就可以了。

tomcat项目部署

java环境安装

#安装jdk环境
[root@localhost ~]# yum -y install java-17-openjdk*

#查看安装的版本
[root@localhost test]# java -version 
openjdk version "17.0.1" 2021-10-19 LTS
OpenJDK Runtime Environment 21.9 (build 17.0.1+12-LTS)
OpenJDK 64-Bit Server VM 21.9 (build 17.0.1+12-LTS, mixed mode, sharing)

tomcat部署

官网下载地址:

https://archive.apache.org/dist/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8.tar.gz

#下载tomcat
[root@localhost src]# wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8.tar.gz
--2022-09-27 17:49:47--  https://archive.apache.org/dist/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8.tar.gz
Resolving archive.apache.org (archive.apache.org)... 138.201.131.134, 2a01:4f8:172:2ec5::2
Connecting to archive.apache.org (archive.apache.org)|138.201.131.134|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11849843 (11M) [application/x-gzip]
Saving to: 'apache-tomcat-10.0.8.tar.gz'

apache-tomcat-10.0.8.tar.gz 100%[==========================================>]  11.30M  52.6KB/s    in 3m 22s  

2022-09-27 17:53:18 (57.2 KB/s) - 'apache-tomcat-10.0.8.tar.gz' saved [11849843/11849843]

#解压,做个软连接
[root@localhost src]# tar xf apache-tomcat-10.0.8.tar.gz -C  /usr/local/
[root@localhost src]# ls
apache-tomcat-10.0.8  debug  kernels
[root@localhost local]# ln -s apache-tomcat-10.0.8/ tomcat
[root@localhost local]# ll
total 0
drwxr-xr-x. 2 root root  6 Jun 22  2021 bin
drwxr-xr-x. 2 root root  6 Jun 22  2021 etc
drwxr-xr-x. 2 root root  6 Jun 22  2021 games
drwxr-xr-x  5 root root 42 Sep 27 15:21 haproxy
drwxr-xr-x. 2 root root  6 Jun 22  2021 include
drwxr-xr-x. 2 root root  6 Jun 22  2021 lib
drwxr-xr-x. 3 root root 17 Jun 27 20:01 lib64
drwxr-xr-x. 2 root root  6 Jun 22  2021 libexec
drwxr-xr-x. 2 root root  6 Jun 22  2021 sbin
drwxr-xr-x. 5 root root 49 Jun 27 20:01 share
drwxr-xr-x. 2 root root  6 Jun 22  2021 src
lrwxrwxrwx  1 root root 21 Sep 27 17:54 tomcat -> apache-tomcat-10.0.8/

#写一个hello world的java页面
[root@localhost tomcat]# ls
BUILDING.txt     LICENSE  README.md      RUNNING.txt  conf  logs  webapps
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin          lib   temp  work
[root@localhost tomcat]# cd webapps/
[root@localhost webapps]# mkdir test
[root@localhost webapps]# ls
ROOT  docs  examples  host-manager  manager  test
[root@localhost webapps]# cd test/
[root@localhost test]# vim index.jsp
<html>
<head>
        <title>test page</title>
</head>
<body>
        <%
                 out.println("Hellow World");
        %>
</body>
</html>

[root@localhost test]# ll
total 4
-rw-r--r-- 1 root root 111 Sep 27 18:08 index.jsp



#配置环境变量启动tomcat
[root@localhost test]# echo 'export PATH=/usr/local/tomcat/bin:$PATH' > /etc/profile.d/tomcat.sh
[root@localhost test]# source /etc/profile.d/tomcat.sh
[root@localhost tomcat]# /usr/src/tomcat/bin/catalina.sh  start
Using CATALINA_BASE:   /usr/src/tomcat
Using CATALINA_HOME:   /usr/src/tomcat
Using CATALINA_TMPDIR: /usr/src/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/tomcat/bin/bootstrap.jar:/usr/src/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

#查看端口号
[root@localhost tomcat]# ss -anlt
State       Recv-Q      Send-Q                Local Address:Port           Peer Address:Port      Process      
LISTEN      0           128                         0.0.0.0:22                  0.0.0.0:*                      
LISTEN      0           1                [::ffff:127.0.0.1]:8005                      *:*                      
LISTEN      0           100                               *:8080                      *:*                      
LISTEN      0           128                            [::]:22                     [::]:*        

浏览器访问网页

image-20220927181501570

image-20220927181726955

访问Host Manager界面

#添加图形化角色
[root@localhost tomcat]# vim conf/tomcat-users.xml 
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="admin-gui"/>
</tomcat-users>

#配置context.xml文件
[root@localhost META-INF]# vim context.xml
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="192\.168\.17\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>


#重启服务
[root@localhost META-INF]# /usr/src/tomcat/bin/catalina.sh stop
Using CATALINA_BASE:   /usr/src/tomcat
Using CATALINA_HOME:   /usr/src/tomcat
Using CATALINA_TMPDIR: /usr/src/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/tomcat/bin/bootstrap.jar:/usr/src/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@localhost META-INF]# /usr/src/tomcat/bin/catalina.sh start
Using CATALINA_BASE:   /usr/src/tomcat
Using CATALINA_HOME:   /usr/src/tomcat
Using CATALINA_TMPDIR: /usr/src/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/tomcat/bin/bootstrap.jar:/usr/src/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

验证:

image-20220927183533745

image-20220927183625595

访问Server Status

#编辑tomcat-users.xml
[root@localhost conf]# vim tomcat-users.xml 
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="admin-gui,manager-gui"/>
</tomcat-users>

#配置context.xml文件
[root@localhost ~]# vim /usr/src/tomcat/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="192\.168\.17.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />  
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>


#重启服务
[root@localhost ~]# /usr/src/tomcat/bin/catalina.sh stop
Using CATALINA_BASE:   /usr/src/tomcat
Using CATALINA_HOME:   /usr/src/tomcat
Using CATALINA_TMPDIR: /usr/src/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/tomcat/bin/bootstrap.jar:/usr/src/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@localhost ~]# /usr/src/tomcat/bin/catalina.sh start
Using CATALINA_BASE:   /usr/src/tomcat
Using CATALINA_HOME:   /usr/src/tomcat
Using CATALINA_TMPDIR: /usr/src/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/tomcat/bin/bootstrap.jar:/usr/src/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

验证:

image-20220927184420089

在这里插入图片描述

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值