什么是tomcat, tomcat该如何使用?(java)

 tomcat是什么?

        tomcat翻译过来为汤姆猫, 但是他可不是猫和老鼠中的汤姆, 而是java中的tom, 虽然java中的tomcat没有猫和老鼠那么出名, 但是他仍然是java中的中流砥柱

 下图为java中的tomcat, 也就是最右边这个黄色的猫:

        Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。

        Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当公司运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。Tomcat最新版本为10.0.23。

名称由来:

        Tomcat最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而O'Reilly出版的介绍Tomcat的书籍(ISBN 0-596-00318-8)[1]的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计为一只公猫。

 下载安装

        直接在tomcat官网下载即可, Tomcat版本很多, 我们以Tomcat 8 为例子:

tomcat官网:

  • 百度搜索tomcat:

  • Apache Tomcat® - Welcome! (除了百度之外还可以直接访问tomcat官网)icon-default.png?t=N7T8https://tomcat.apache.org/

下载:

tomcat官网主页

下载

 

选择zip下载压缩包(记得一定要放在自己找得到的位置, 后面会用到) 

 

tomcat目录结构 

        解压后的目录: 

解释如下:

  • bin : 存放各种启动停止脚本的文件(.sh后缀的文件是以后再linux上使用的文件, .bat文件是在windows上使用的)
  • conf : 相关配置文件, 目前我们不需要担心
  • lib : 运行tomcat需要的类库
  • logs : 运行是的日志文件, 可以通过这个日志文件来定位一些问题
  • temp : 临时文件夹
  • webapps : 来存放我们需要运行的web application的文件夹, 是一个非常常用的文件夹
  • work : tomcat内部进行预编译的文件夹

这个里面最重要的文件夹就是webapps文件夹, webapps是web applications的简称, 意思是用来存放web应用文件夹.

什么是web应用?
一个具有独立完整功能的"网站", 我们就可以称为一个web应用

例如 搜狗搜索 实现了独立完整的"搜索引擎功能", 淘宝网实现了独立完整的"电商功能"

一个tomcat服务器上是可以同时部署多个web应用,这些web应用以目录的形式被放到webapps目录中

 进入webapps目录:

每个文件夹都对应着一个 web 应用, 可以在浏览器中分别访问每个 web 应用

启动服务器

        在bin目录中, 双击start.bat 即可启动tomcat服务器

 看到如下内容的日志说明启动成功

 但是我们发现里面还存在很多乱码

为什么会出现乱码?
在windows8上通过cmd启动tomcat会出现乱码, 但是不会影响tomcat的使用, 原因是tomcat默认是utf-8的编码方式, 而windows的cmd是默认gbk编码的

在浏览器中输入127.0.0.1:8080 即可看到Tomcat的欢迎页面

tomcat欢迎页

 启动失败???

最常见的启动失败的原因就是端口号被占用, tomcat启动的时候会默认绑定8080和8005端口, 如果有进程占用了这两个其中的任意一个, 都会导致tomcat启动失败, 可以在命令行中使用:
netstat -ano | finder 8080 来确定8080这个端口是否被其他进程占用, 把占用的进程干掉, 重启taomcat就可以解决问题

如下, 说明8080这个端口被占用, 然后在任务管理器里面干掉这个进程

部署静态页面

什么是"静态"?

         静态页面也就是内容始终是固定的页面, 及时用户不同, 时间不同, 或者是输入的参数不同,页面也不会发生变化(除非网站的开发人员修改代码)

        例如: tomcat的主页就是一个静态页面

https://tomcat.apache.org/icon-default.png?t=N7T8https://tomcat.apache.org/

而b站的主页则是一个动态页面, 每次进入b站的时候, 他都会给你推送不同的视频内容哔哩哔哩 (゜-゜)つロ 干杯~-bilibili哔哩哔哩(bilibili.com)是国内知名的视频弹幕网站,这里有及时的动漫新番,活跃的ACG氛围,有创意的Up主。大家可以在这里找到许多欢乐。icon-default.png?t=N7T8https://www.bilibili.com/

部署单个HTML页面 

        可以把写好的HTML页面部署到Tomcat中 

1. 创建html页面, 内容为一个hello

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0,
maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>hello</title>
</head>
<body>
    <div>hello</div>
</body>
</html>

2. 把hello.html拷贝到tomcat的webapps里面

3. 点击startup.bat(windows) 或者 startup.sh(linux)

4. 然后在浏览器中输入url来访问: http://127.0.0.1:8080/hello.html

 

注意: 127.0.0.1 为本地环回 IP, 表示当前主机. 此时同学们无法通过这个 IP 访问到老师电脑上的页面
 

部署带有CSS / JavaScript / 图片的HTML

        因为我们实际的开发不可能仅仅只有一个html文件,  还需要依赖一些其他资源, 例如CSS/JS/图片等等, 这些资源也要一起部署过去, 那该如何部署呢??

1. 创建html文件: hello2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>静态页面</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <img src="doge.jpg" alt="">
    <script src="app.js"></script>
</body>
</html>

 2. 创建 style.css

img {
width: 500px;
height: 500px;
}

3. 创建 app.js

console.log("hello");

4. 准备一个 doge.jpg

5. 把上面四个文件都拷贝到tomcat 的webapps/ROOT中.

 6. 访问, 通过http://127.0.0.1:8080/hello2.html 来访问页面

 7. 通过fiddler抓包可以发现浏览器和服务器之间有4个http请求和响应的交互

  • 在浏览器地址栏里输入 http://127.0.0.1:8080/hello2.html 会触发一次 GET 请求. 这个请求会拿到 hello2.html 的内容.
  • 浏览器解析 hello2.html, 其中的 link 标签, img 标签, script 标签都会分别触发一次 GET 请求. 请求的 路径 分别为 /style.css , /doge.jpg , /app.js

 部署html到单独的目录中

        实际开发中的html页面不止一个, 依赖的css/js文件也可能比较多, 这个时候就不适合全部拷贝到webapps/ ROOT目录中了, 因为文件比较多的时候, 就会显得非常慢.

        我们可以创建一个单独的目录, 和ROOT并列, 来存放我们要部署的内容.

1. 在webapps中创建目录HelloApp目录

 2. 把刚才创建的四个文件hello2.html, style.css, doge.jpg, app.js拷贝到这个HelloApp.

3. 在浏览器中通过http://127.0.0.1:8080/HelloApp/hello2.html

4.通过抓包可以看到, 浏览器和服务器之间同样是 4 次 HTTP 请求/响应 的交互.

 部署到云服务器

   利用上面的这个yum安装tomcat也是可以的,只不过yum安装的tomcat版本比较旧,所以更好的方法还是手动安装tomcat。

        tomcat本身安装就很容易。 

        但是一定要保证jdk安装好了之后才能去安装tomcat,因为tomcat也是java写的程序 。

        此外我们使用的centOS7对应的tomcat版本(7.0版本)是比较老的,如果我们现在使用的tomcat是7的话,就和我们的servelt版本不搭配,此处下载了7版本也就servlet也要换,就比较麻烦,所以我们直接在tomcat官网下载tomcat8

选择download里面的tomcat8

 然后找到里面的:

        我们以前在win系统上也是在这个core这里下载的,这里需要注意的是,tomcat是跨平台的。所以我们还是下载这个压缩包即可(.zip文件)。

        然后把下载好的文件上传到linux系统即可。

        如何上传? 首先在linux中进入到tomcat将要存放的目录,然后直接在win窗口中的资源管理器中,将对应的tomcat文件直接拖拽然至linux窗口即可。

        当然这个功能只支持xshell和其他终端的zmode功能

        如果xshell拖拽之后还是无法上传文件,那么就需要现在linux里面使用yum来安装lrzsz

yum install lrzsz

  • rz 是把文件从windows上传给linux
  • sz是把文件从linux传给windows
  • 直接拖拽释放文件就是自动执行了rz

        如果你是上传的.zip压缩包,还需要对其进行解压缩。

        直接unzip 压缩包名即可:

unzip zipFile.zip 

        同时unzip找不到的话,也是可以通过yum install unzip即可。 

         解压之后还没完,还需要将tomcat的启动脚本加上可执行权限:

进入tomcat的目录如下:

其中bin目录中就有启动脚本。

        其中里面有很多文件就是给linux使用的(.sh后缀的文件就是给linux使用的脚本,但是一般这些脚本在linux中没有启动权限,需要先赋予权限) 

         下面的操作是给予权限的过程:

  1. 进入到tomcat的bin目录,在tomcat目录里面使用cd bin
  2. 然后使用命令:chmod + x *.sh
  3. 使用命令之后没有提示即给予权限成功
  4. 执行成功之后,这个里面的.sh文件就全都变成绿色的了(参考图1)
  5. 就可以启动tomcat 了,但是得先检查tomcat的端口是否被占用了,tomcat的默认 端口为8080和8005: netstat -anp | grep 8080:

    netsat -anp | grep 8005:

    所以说明这两端口是空闲的。
  6. 启动tomcat:sh startup.sh
  7. 检查tomcat的运行状态:netstat -anp | grep 8080:

    ps aux | grep tomcat:
  8. 启动成功了
  9. 外网访问 tomcat 默认 demo

在浏览器地址栏中
http : //[ 服务器外网 ip]:8080/

在外网访问这个页面之前需要先开启服务器的 " 安全组 " 功能 .
登陆自己的云服务账户 , 在主页中找到 控制台 -> 自己的服务器 -> 安全组
需要配置安全组 , 允许外部主机访问服务器的 8080 端口 .
备注 : 安全组配置界面如果找不到 , 可以随时咨询云服务器客服 .
(1) 选择加入安全组
(2) 选择新建安全组
(3) 点击新建按钮
(4) 选择安全组的模板 , 推荐使用第二个模板

(5)在任意一行规则的地方, 点击插入, 新增一行安全组规则即可 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年软件测试面试必看系列,看完去面试你会感谢我的!!

朋友圈点赞的测试用例 功能测试 1点赞后是否显示结果 2.点赞后是否可以取消; 3.点赞取消后是否可以重复点赞; 4.共同好友点赞后&#xff0c;是否有消息提醒; 5.非共同好友点赞后&#xff0c;是否有消息提醒; 6.点击点赞人昵称&#xff0c;是否可以跳转到他/她的主页; 7.自己能…

图像倾斜角度求取-Radon变换

Radon算法 Radon&#xff08;拉东&#xff09;算法是一种通过定方向投影叠加&#xff0c;找到最大投影值时角度&#xff0c;从而确定图像倾斜角度的算法。具体过程如图所示 图1 Radon变换算法 Radon计算示例 对于纹理方向明显的图像&#xff0c;如图2所示&#xff0c;可以通…

基于springboot实现应急救援物资管理系统项目【项目源码】计算机毕业设计

基于springboot实现应急救援物资管理系统演示 JAVA简介 JavaScript是一种网络脚本语言&#xff0c;广泛运用于web应用开发&#xff0c;可以用来添加网页的格式动态效果&#xff0c;该语言不用进行预编译就直接运行&#xff0c;可以直接嵌入HTML语言中&#xff0c;写成js语言&a…

数学建模-图与网络模型解题方法和代码实现

本文针对以下几个方面问题进行整理&#xff1a; 最短路问题 两个指定顶点之间的最短路径任意顶点之间的最短路径 2.最小生成树问题 求最小生成树 3.网络最大流问题 源点与汇点之间的最大流基于最大流的最小费用求解 4.旅行商问题 基于哈密顿(Hamilton)圈求解旅行商线性…

九、Linux用户管理

1.基本介绍 Linux系统是一个多用户多任务的操作系统&#xff0c;任何一个要使用系统资源的用户&#xff0c;都必须首先向系统管理员申请一个账号&#xff0c;让后以这个账号的身份进入系统 2.添加用户 基本语法 useradd 用户名 应用案例 案例1&#xff1a;添加一个用户 m…

[游戏开发][Untiy]跨平台可视化Log系统

工具介绍 今天介绍的主角是LogViewer 工具运行时长这个样子&#xff0c;Unity的Log日志都会在这里显示 如何安装 在Unity商店搜索Log&#xff0c;排名第一的就是它 也可以去Github官网下载源码&#xff1a; Unity-Logs-Viewerhttps://github.com/aliessmael/Unity-Logs-Vie…

六.Linux远程登录

1.说明&#xff1a;公司开发的时候&#xff0c;具体的应用场景是这样的 1.linux服务器是开发小组共享 2.正式上线的项目是运行在公网 3.因此程序员需要远程登录到Linux进行项目管理或者开发 4.画出简单的网络拓扑示意图(帮助理解) 5.远程登录客户端有Xshell6、Xftp6&#xff0…

星火模型(Spark)的langchain 实现

星火模型的langchain实现 测试已通过&#xff0c;希望有所帮助。 使用前请先安装环境&#xff1a; pip install githttps://github.com/shell-nlp/spark-ai-python.git注意&#xff1a; 一定要使用上面方式安装spark库&#xff0c;因对官方的库做了改动。官方的库已经长时间不…

基于RK3588全高端智能终端机器人主板

一、小尺寸板型设计 该款主板为小型板&#xff0c;尺寸仅为125*85mm&#xff0c;更小更紧凑&#xff0c;可完美适应各类高端智能自助终端&#xff1b; 二、八核高端处理器 采用RK3588S八核64位处理器&#xff0c;8nm LP制程&#xff0c;主频最高达2.4GHz&#xff0c;搭载Andr…

吾爱破解置顶的“太极”,太好用了吧!

日常工作和娱乐&#xff0c;都需要用到不同类型的软件&#xff0c;哪怕软件体积不大&#xff0c;也必须安装&#xff0c;否则到用时找不到就非常麻烦了。 其实&#xff0c;很多软件不一定一样不剩地全部安装一遍&#xff0c;一方面原因是用的不多&#xff0c;另一方面多少有点…

95. 最长公共子序列

题目 题解 class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:# 定义状态&#xff1a;dp[i][j]表示s1[0:i]和s2[0:j]的最长公共子序列dp [[0 for j in range(len(text2)1)] for i in range(len(text1) 1)]# badcase: dp[i][0] 0, dp[0…

Python操作Excel常用方法汇总

目录 引言 一、使用pandas库操作Excel 1、读取Excel文件 2、写入Excel文件 3、处理Excel数据 二、使用openpyxl库操作Excel 1、读取Excel文件 2、写入Excel文件 3、处理Excel数据 三、高级功能 总结 引言 Python是一种功能强大的编程语言&#xff0c;它可以用来处理…

概念解析 | 网络安全数字孪生(Digital Twin of Cyber Security, DTCS)技术

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:网络安全数字孪生。 概念解析 | 网络安全的“数字镜像” —— 网络安全数字孪生 1. 背景介绍 随着数字化转型进程的深入推进,网络空间安全问题日益凸显。当前的网络安全防护面…

【win32_000】视频截图

PPT 编译器不会自己添加unicode定义 v 函数 WinMain int __clrcall WinMain([in] HINSTANCE hInstance ,//应用程序的当前实例的句柄。[in, optional] HINSTANCE hPrevInstance ,//应用程序上一个实例的句柄。 此参数始终为 NULL。[in] …

【坑】从源码安装Nav2(ROS2-iron) (不兼容的ompl和nav2)

文章目录 前言三种安装方式应当具备的知识源码安装Nav2找到Nav2的仓库下载源码下依赖构建源码构建源码中遇到的问题找不到Config.cmakefatal error: Eigen/Core: No such file or directoryoom C: fatal error: Killed signal terminated program cc1pluserror: RPC failed&…

【Linux进程】进程等待 与 进程替换 原理与函数使用

文章目录 一、进程等待1.1 意义 / 必要性1.2 进程等待的函数&#xff08;wait / waitpid&#xff09;1.3 status参数1.4 获取子进程status1.5 进程的阻塞等待与非阻塞等待 二、进程替换2.1 引言2.2 进程替换原理2.3 替换函数 一、进程等待 1.1 意义 / 必要性 为什么要有进程等…

2020年09月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下面哪个按钮可以实现音乐结束时音量慢慢变小? A: B: C: D:

Network(四)NAT实现方式与VRRP概述

一 NAT 1 NAT概述 &#xff08;1&#xff09;NAT的作用 Network Address Translation&#xff0c;网络地址转换 通过将内部网络的私有IP地址转换成全球唯一的公网IP地址使内部网络可以连接到互联网。 &#xff08;2&#xff09;私有IP地址分类 A类10.0.0.0~10.255.255.…

基于springboot实现智能热度分析和自媒体推送平台系统项目【项目源码】

基于springboot实现自媒体社区平台系统演示 系统开发平台 在该自媒体分享网站中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编程。其功能…

RTD系统

RTD&#xff08;实时派工系统&#xff09;帮助半导体工厂优化派工&#xff0c;提升生产效率&#xff0c;提高设备利用率&#xff0c;降低Lot Cycle Time&#xff0c;RTD分为&#xff1a;WhatNext和WhereNext&#xff0c;解决工厂内部机台下一步跑什么Lot和Lot生产完后去哪里的问…