Web 基础——Tomcat

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Tomcat 是一个开源的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调式 JSP 程序的首选。官方:https://tomcat.apache.org

Web 基础——Tomcat



一、Tomcat 简介


1.Apache 与 Tomcat 比较

2.Tomcat 同类产品

3.Tomcat 与 JDK 的关系

4.Tomcat 内部工作原理

5.Tomcat 请求过程


二、部署 Tomcat 服务


1.配置 Tomcat 的 Manager 管理界面

2.配置 Tomcat 的虚拟主机


三、使用 Tomcat 实现超市订单管理系统


1.安装 Mariadb 数据库


一、Tomcat 简介



Tomcat 是一个开源的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调式 JSP 程序的首选。官方:https://tomcat.apache.org


1.Apache 与 Tomcat 比较


相同点:


  1. 两者都是 Apache 组织开放的。
  2. 两者都有 HTTP 服务的功能。
  3. 两者都是开源的。


不同点:


  • Apache 只能处理静态页面,而 Tomcat 不但可以处理静态页面(没有 Apache 效果好),还可以处理动态页面(JSP)。


2.Tomcat 同类产品



WebLogic 是 ORACLE 公司的产品:


  • 可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。
  • WebLogic 支持企业级的、多层次的和完全分布式的 Web 应用,并且服务器的配置简单、界面友好。


3.Tomcat 与 JDK 的关系


JDK 是 JAVA 运行和编译的,Tomact 是 Web 项目的运行容器,JAVA 没有 JDK 没办法编译运行,JAVA 运行必须依赖 JDK 的环境,所以安装 Tomact 前必须安装 JDK 环境。Tomcat 与 JDK 的对应关系


4.Tomcat 内部工作原理


1)Tomcat 整体架构


image.png


2)组件关联


  • Tomca 的心脏是两个组件: Connector 和 Container(Engine,Host,Context,Wrapper)
  • 一个 Container(集装箱)可以选择多个 Connector(连接器),多个 Connector 和一个 Container 就形成了一个 Service。
  • Service 可以对外提供服务,而 Server 服务器控制整个 Tomcat 的生命周期。


3)Container 组件信息:


顶级组件 Server:


  • 表示一个正在 JVM 运行的 Tomcat 实例。


顶级组件 Service:表示 Tomcat 中一组处理请求,提供服务的组件。


  • Connector(连接器):客户端访问 Tomcat 的端口号(如:8005 8009 8080)
  • Container(集装箱):包含了客户端具体访问的资源。
  • 包含 4 大请求处理组件:引擎(Engine)、虚拟主机(Host)、上下文(Context)组件。


其它组件:


  • Tomcat 还有其它重要的组件,如安全组件 Security、Logger、Session、Mbeans、Naming 等其它组件。
  • 这些组件共同为 Connector 和 Container 提供必要的服务。


5.Tomcat 请求过程



image.png


二、部署 Tomcat 服务



准备工作


image.png



[root@Tomcat ~]# ls
anaconda-ks.cfg  jdk-8u181-linux-x64.tar.gz
[root@Tomcat ~]# tar zxf jdk-8u181-linux-x64.tar.gz
[root@Tomcat ~]# ls
anaconda-ks.cfg  jdk-8u181-linux-x64.tar.gz  jdk1.8.0_181
[root@Tomcat ~]# mv jdk1.8.0_181/ /usr/local/java
[root@Tomcat ~]# cat <<END >> /etc/profile
export PATH=$PATH:/usr/local/java/:/usr/local/java/bin/
END
[root@Tomcat ~]# source /etc/profile
[root@Tomcat ~]# java -version


image.png


安装 Tomcat


[root@Tomcat ~]# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
[root@Tomcat ~]# ls
anaconda-ks.cfg  apache-tomcat-8.5.32.tar.gz  jdk-8u181-linux-x64.tar.gz
[root@Tomcat ~]# tar zxf apache-tomcat-8.5.32.tar.gz 
[root@Tomcat ~]# ls
anaconda-ks.cfg  apache-tomcat-8.5.32.tar.gz  apache-tomcat-8.5.32  jdk-8u181-linux-x64.tar.gz
[root@Tomcat ~]# mv apache-tomcat-8.5.32 /usr/local/tomcat
[root@Tomcat ~]# /usr/local/tomcat/bin/startup.sh           # 启动 Tomcat 服务
[root@Tomcat ~]# netstat -anpt | grep 8080                # 查看端口是否开启


访问验证:


image.png


1.配置 Tomcat 的 Manager 管理界面


[root@Tomcat ~]# sed -i '$i<role rolename="manager-gui"/>' /usr/local/tomcat/conf/tomcat-users.xml
[root@Tomcat ~]# sed -i '$i<user username="tomcat" password="tomcat" roles="manager-gui"/>' /usr/local/tomcat/conf/tomcat-users.xml
[root@Tomcat ~]# tail -3 /usr/local/tomcat/conf/tomcat-users.xml


image.png


默认 Tomcat 的管理页面只能通过 Tomcat 服务器上的浏览器才可以访问,设置其可以在其他主机访问


[root@Tomcat ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
将:
20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
修改为:
20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
[root@Tomcat ~]# /usr/local/tomcat/bin/shutdown.sh              # 关闭 Tomcat 服务
[root@Tomcat ~]# /usr/local/tomcat/bin/startup.sh             # 开启 Tomcat 服务


查看 Tomcat 状态:


image.png


image.png


image.png


2.配置 Tomcat 的虚拟主机


[root@Tomcat ~]# mkdir -p /web/Coco
[root@Tomcat ~]# mkdir -p /web/Zozo
[root@Tomcat ~]# echo "www.Coco.com" > /web/Coco/index.jsp
[root@Tomcat ~]# echo "www.Zozo.com" > /web/Zozo/index.jsp
[root@Tomcat ~]# vim /usr/local/tomcat/conf/server.xml
<Host name="www.Coco.com"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
      <Context docBase="/web/Coco" path="" reloadable="false"></Context>
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       prefix="localhost_access_log" suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
<Host name="www.Zozo.com"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
      <Context docBase="/web/Zozo" path="" reloadable="false"></Context>
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       prefix="localhost_access_log" suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
[root@Tomcat ~]# /usr/local/tomcat/bin/shutdown.sh
[root@Tomcat ~]# /usr/local/tomcat/bin/startup.sh


验证:


image.png


注意事项:


  • 当把 Host 设置为域名时,就只能使用域名进行访问;而把 Host 设置为 localhost 时,就只能使用 IP 进行访问。
  • 优点: 防止恶意绑定。


三、使用 Tomcat 实现超市订单管理系统



1.安装 Mariadb 数据库


[root@Tomcat ~]# yum -y install mariadb mariadb-server
[root@Tomcat ~]# systemctl start mariadb
[root@Tomcat ~]# mysqladmin -u root password 123123
[root@Tomcat ~]# ls
anaconda-ks.cfg  apache-tomcat-8.5.32.tar.gz  jdk-8u181-linux-x64.tar.gz  smbms_db.sql
[root@Tomcat ~]# mysql -uroot -p123123 < smbms_db.sql
[root@Tomcat ~]# mysql -uroot -p123123
MariaDB [(none)]> grant all on smbms.* to zhangsan@192.168.1.1 identified by '123123';
MariaDB [(none)]> flush privileges;


image.png


1)查看超市管理员密码:


[root@Tomcat ~]# mysql -uroot -p123123
MariaDB [(none)]> use smbms
MariaDB [smbms]> show tables;
MariaDB [smbms]> select * from smbms_user;
|  1 | admin     | 系统管理员      | 1234567      | ...
...


image.png


2)上线超市订单管理系统项目:


[root@Tomcat ~]# cd /usr/local/tomcat/webapps/
[root@Tomcat webapps]# rm -rf *
[root@Tomcat webapps]# ls
WebRoot


image.png

[root@Tomcat webapps]# vim WebRoot/WEB-INF/classes/database.properties
修改:
url=jdbc:mysql://192.168.1.1:3306/smbms?useUnicode=true&characterEncoding=utf-8
user=zhangsan                 # 数据库授权用户名
password=123123                 # 数据库授权密码


3)访问验证:


image.png


image.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
60 0
|
3月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
57 1
|
3月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
116 0
|
5月前
|
XML 网络协议 Java
JavaWeb -- HTTP -- WEB服务器TOMCAT
JavaWeb -- HTTP -- WEB服务器TOMCAT
|
1月前
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
3月前
|
网络协议 Java 应用服务中间件
Tomcat源码分析 (一)----- 手撕Java Web服务器需要准备哪些工作
本文探讨了后端开发中Web服务器的重要性,特别是Tomcat框架的地位与作用。通过解析Tomcat的内部机制,文章引导读者理解其复杂性,并提出了一种实践方式——手工构建简易Web服务器,以此加深对Web服务器运作原理的认识。文章还详细介绍了HTTP协议的工作流程,包括请求与响应的具体格式,并通过Socket编程在Java中的应用实例,展示了客户端与服务器间的数据交换过程。最后,通过一个简单的Java Web服务器实现案例,说明了如何处理HTTP请求及响应,强调虽然构建基本的Web服务器相对直接,但诸如Tomcat这样的成熟框架提供了更为丰富和必要的功能。
|
3月前
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
224 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
|
2月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
54 0
|
3月前
|
jenkins 持续交付 开发工具
"引爆效率革命!Docker+Jenkins+GIT+Tomcat:解锁持续集成魔法,一键部署Java Web应用的梦幻之旅!"
【8月更文挑战第9天】随着软件开发复杂度的增加,自动化变得至关重要。本文通过实例展示如何结合Docker、Jenkins、Git与Tomcat建立高效的持续集成(CI)流程。Docker确保应用环境一致性;Jenkins自动化处理构建、测试和部署;Git管理源代码版本;Tomcat部署Web应用。在Jenkins中配置Git插件并设置项目,集成Docker构建Tomcat应用镜像并运行容器。此外,通过自动化测试、代码质量检查、环境隔离和日志监控确保CI流程顺畅,从而显著提高开发效率和软件质量。
76 3
|
3月前
|
应用服务中间件
2022年最新最详细在IDEA中配置Tomcat(含有详细图解过程)、建立使用IEDA建立一个Web项目的案例
这篇文章提供了在IntelliJ IDEA中配置Tomcat服务器的详细步骤,包括添加Tomcat Server、选择安装路径、添加项目Artifact,以及创建和展示Web项目的流程。