当前位置: 首页 > news >正文

JavaWeb-Tomcat服务器

文章目录

  • Web服务器存在的意义
  • 关于Web服务器软件
  • Tomcat服务器简介
  • 安装Tomcat服务器
  • Tomcat服务器源文件解析
  • 配置Tomcat的环境变量
  • 启动Tomcat服务器
  • 一个最简单的webapp(不涉及Java)

Web服务器存在的意义

我们之前介绍过Web服务器进行通信的原理, 但是我们当时忘记了一点, 服务器上的程序都是通过一种服务器软件来进行管理的, 我们叫做服务器软件, 我们请求资源也是请求服务器上不同软件种的不同的资源, 示意图如下

在这里插入图片描述

关于Web服务器软件

运行在服务器上的Web服务器软件有好多款, 下面是常见的几种

  • Tomcat(Web服务器)
  • Jetty(Web服务器)
  • JBOSS(应用服务器)
  • WebLogic(应用服务器)
  • WebSphere(应用服务器)

web服务器和应用服务器的区别
我们的JavaEE规范一共有13种, 我们的应用服务器实现了全部的JavaEE规划, Web服务器仅仅实现了JavaEE规范中的servlet和jsp, 所以应用服务器其实是包含Web服务器的, 比如JBOSS服务器其实内置了Tomcat服务器

Tomcat服务器简介

Tomcat服务器Apache开源组织开发的一款轻量级的Web服务器, 具有轻量级, 速度快, 免费开源等优点, 而且Tomcat服务器是由纯Java语言开发的(所以运行需要安装JRE, 所以安装JDK是必要的), 而且还要设置JAVA_HOME环境变量, 后面配置要用
tomcat还有另外一个名字:catalina(catalina是美国的一个岛屿,风景秀丽,据说作者是在这个风景秀丽的小岛上开发了一个轻量级的WEB服务器,体积小,运行速度快,因此tomcat又被称为catalina)tomcat的是一只公猫(寓意表示Tomcat服务器是轻巧的,小巧的,果然,体积小,运行速度快,只实现了Servlet+JSP规范)

关于Apache开源组织的官方网址

Apache开源组织官网地址

我们可以找到有大量的开源项目

在这里插入图片描述

安装Tomcat服务器

我们打开Tomcat官网, 找到Tomcat服务器的安装地址, 我们需要安装的是

  • core zip(pgp,sha512): Tomcat服务器的本体
  • source code zip(pgp, sha512): Tomcat服务器的源代码(源码分析)
    在这里插入图片描述

Tomcat服务器源文件解析

我们下载压缩包解压之后就自动安装了Tomcat服务器, 我们简单介绍一下目录
在这里插入图片描述


bin目录

Tomcat命令文件存在的地方, 比如启动Tomcat, 关闭Tomcat

我们关注一个文件startup.bat
bat文件其实就是在window操作系统下的命令的集合文件, 也就是Windows批处理文件, 里面都是dos命令, 而在Linus系统下, .bat是.sh, 因为Linux使用命令的方式, 不是dos命令, 而是shell命令

在这里插入图片描述
在这里插入图片描述

上图代表window的启动命令的集合, 而下图代表linux的启动命令的集合

我们打开这个文件查看相关内容
在这里插入图片描述
大致可以了解, window启动startup.bat的方式, 其实是进一步运行了catalina.bat来完成的

在这里插入图片描述
我们现在打开这个文件查看, 搜索mainclass, 因为Tomcat服务器是Java语言写的, 所以必然存在一个程序的入口, 也就是main函数

在这里插入图片描述
我们在最开始的时候就说, 我们下载了Tomcat的源代码, 现在我们根据上面提供的类的路径找到这个Java源文件
在这里插入图片描述
进一步就可以找到Tomcat服务器启动的入口, 也就是main函数


conf目录

配置文件所在的目录

在这里插入图片描述
这个目录下全是Tomcat服务器的配置文件, 比如我们查看其中一个server.xml, 里面就可以配置端口号相关的信息(默认的端口号是8080)
在这里插入图片描述


lib目录

这个是我们Tomcat服务器程序的核心文件, 里面都是以jar包形式存在的.class字节码文件

在这里插入图片描述
但是我们上面画出来的servlet-api.jar这个不是我们Tomcat服务器的实现, 这是我们JavaEE的规划接口, 真正的Tomcat服务器程序都是基于这个规范来写的(类似JDBC)


剩下的几个文件不是那么重要简单过一下

  • logs: Tomcat服务器的日志目录,Tomcat服务器启动等信息都会在这个目录下生成日志文件,
  • temp:Tomcat股务器的临时目录,存储临时文件。
  • webapps:这个目录当中就是用来存放大量的webapp(webapplication:web应用)
  • work:这个目录是用来存放JSP文件翻译之后的java文件以及编译之后的class文件

关于webapps这个目录, 我们之前就说, 一个Tomcat服务器管理多个web应用程序, 所以这里面其实存储的都是我们的web应用程序

在这里插入图片描述
可以看到webapps目录下有很多的自带的web应用程序

配置Tomcat的环境变量

在配置Tomcat的环境变量之前, 一定要配置JAVA_HOME, 因为startup.bat调用的catalina.bat中需要JAVA_HOME, 没有配置JAVA_HOME的话, 我们的tomcat服务器的环境变量就会配置失效

  • 配置CATALINA_HOME也就是安装Tomcat服务器的地址

在这里插入图片描述

  • Path中配置bin目录的路径

在这里插入图片描述

启动Tomcat服务器

  • 使用startup.bat命令启动Tomcat服务器

在这里插入图片描述
在这里插入图片描述
虽然都是乱码, 但是服务器已经启动成功了

我们通过浏览器来验证
在搜索框搜索http://127.0.0.1:8080
在这里插入图片描述
如果展示上面的页面, 就说明启动成功了
这里为什么会展示这样一个页面呢, 因为我们有webapps默认的…

  • 使用shutdown.bat命令关闭Tomcat

这里我们想说一句, shutdown是window关机的命令, 所以我们不推荐使用这种方式, 我们建议把shutdown.bat文件改名, 比如我们就改为了stop.bat

在这里插入图片描述

一个最简单的webapp(不涉及Java)

上面我们说了, 所有的webapp都存在于webapps这个文件夹中, 所以我们想写一个web应用, 必须在这个文件夹中写(不要多想)

创建一个项目oa, 然后创建一个login.html
在这里插入图片描述
我们在浏览器中请求获取这个资源

http://127.0.0.1:8080/oa/login.html

在这里插入图片描述
结果如上图所示, 这代表我们的Tomcat服务器返回给了用户一个资源文件…

相关文章:

JavaWeb-Tomcat服务器

文章目录 Web服务器存在的意义关于Web服务器软件Tomcat服务器简介安装Tomcat服务器Tomcat服务器源文件解析配置Tomcat的环境变量启动Tomcat服务器一个最简单的webapp(不涉及Java) Web服务器存在的意义 我们之前介绍过Web服务器进行通信的原理, 但是我们当时忘记了一点, 服务器…...

vue语法---样式操作-行内样式

文章目录 直接写死的行内样式v-bind绑定对象(静态样式)对象数组 直接写死的行内样式 <template><div v-bind:style"{color:red}">睡觉</div> </template><script>export default{data() {return {}},methods:{}, mounted(){},} </…...

封装一个echarts的组件

父组件页面 <yyjlchartv-if"showyyjl"chartId"yyjllLine":sourceData"sourceDatayyjl":options"optionsyyjl"></yyjlchart>components: {LineEcharts,yyjlchart: () > import("../yyjlchart"),},data() {re…...

计算机网络安全之一:网络安全概述

1.1 网络安全的内涵 随着计算机和网络技术的迅猛发展和广泛普及&#xff0c;越来越多的企业将经营的各种业务建立在Internet/Intranet环境中。于是&#xff0c;支持E-mail、文件共享、即时消息传送的消息和协作服务器成为当今商业社会中的极重要的IT基础设施。然而&#xff0…...

Linux 性能调优简单指南

一、性能调优概述 Linux 性能调优是系统运维的核心任务之一,目的是通过资源分配、参数优化和瓶颈消除,提升系统运行效率和稳定性。调优需遵循以下原则: 基于数据驱动:使用监控工具精准定位瓶颈分层逐级分析:从硬件到应用的逐层排查变更可回溯:单变量调整并记录结果场景适…...

第十一章: vue2-3 生命周期

创建 挂载 更新 销毁 四个阶段 > 生命周期函数 生命周期钩子  created mounted 创建vue2 的脚手架&#xff1a; vue create vue2_test v-show"isShow" v-if "isShow" 这里的isShow 表示一个函数 let isShow "true" <tem…...

【算法基础】--前缀和

前缀和 一、一维前缀和示例模板[寻找数组的中心下标 ](https://leetcode.cn/problems/tvdfij/description/)除自身以外的数组乘积和可被k整除的子数组 一、一维前缀和 前缀和就是快速求出数组某一个连续区间内所有元素的和。 示例模板 已知一个数组arr&#xff0c;求前缀和 …...

输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索

后端数据代码写于下一篇&#xff1a;输入搜索、分组展示选项、下拉选取&#xff0c;全局跳转页&#xff0c;el-select 实现 —— 后端数据处理代码&#xff0c;抛砖引玉展思路 【效果图】&#xff1a;分组展示选项 【去界面操作感受一下】—> 便捷简洁的企业官网 【录制效…...

Web入侵实战分析-常见web攻击类应急处置实验2

场景说明 某天运维人员&#xff0c;发现运维的公司站点被黑页&#xff0c;首页标题被篡改&#xff0c;你获得的信息如下&#xff1a; 操作系统&#xff1a;windows server 2008 R2业务&#xff1a;公司官网网站架构&#xff1a;通过phpstudy运行apache mysqlphp开放端口&…...

DeepSeek:AI商业化的新引擎与未来蓝图

摘要 在人工智能迅猛发展的浪潮中&#xff0c;DeepSeek以其卓越的技术实力和高超的商业化能力崭露头角。作为一款现象级AI产品&#xff0c;它不仅在算法性能上位居行业前列&#xff0c;还通过灵活的定制解决方案渗透到金融、医疗、零售等多个领域。DeepSeek以创新的商业模式和场…...

从零开始学习PX4源码9(部署px4源码到gitee)

目录 文章目录 目录摘要1.gitee上创建仓库1.1 gitee上创建仓库PX4代码仓库1.2 gitee上创建子仓库2.固件在gitee部署过程2.1下载固件到本地2.2切换本地分支2.3修改.gitmodules内容2.4同步子模块仓库地址2.5同步子模块仓库地址更新(下载)子模块3.一级子模块和二级子模块的映射关…...

wps中zotero插件消失,解决每次都需要重新开问题

参考 查看zotero目录 D:\zotero\integration\word-for-windows 加载项点击 dotm即可 长期解决 把dom 复制到 C:\Users\89735\AppData\Roaming\kingsoft\office6\templates\wps\zh_CN还是每次都需要重新开的话 重新加载一下...

【Python 语法】collections 模块的字典类 defaultdict

默认字典 (defaultdict) 的语法defaultdict 的常见应用场景1. 计数2. 分组3. 嵌套字典 defaultdict 是 Python 中 collections 模块提供的一个字典类&#xff0c;它和普通字典&#xff08; dict&#xff09;的主要区别在于 提供了一个默认值&#xff0c;可以避免在访问字典中…...

《论系统需求分析方法》写作心得 - 系统分析师

系统需求分析方法论述 一、项目概述及本人职责 本人曾参与一项企业级客户关系管理系统&#xff08;CRM&#xff09;的开发项目&#xff0c;担任系统分析师的角色。该项目旨在为企业提供一个集客户信息管理、销售过程跟踪、客户服务支持于一体的综合管理平台&#xff0c;以提升…...

Jupyter里面的manim编程学习

1.Jupyterlab的使用 因为我之前一直都是使用的vscode进行manim编程的&#xff0c;但是今天看的这个教程使用的是Jupyter&#xff0c;我也很是好奇这个manim在Jupyter这样的交互式下面会生成怎么样的效果&#xff0c;所以今天尝试了jupyter&#xff0c;并且对于两个进行比较和说…...

Python之装饰器二 带参数的装饰器

前言一、带参数的装饰器二、在装饰器里面传入参数总结 前言 暂无 一、带参数的装饰器 我们知道&#xff0c;不带参数的装饰其实就是在函数的头上添加装饰器时放一个名称&#xff0c;这种写法就默认了装饰器函数调的是被装饰函数自己&#xff0c;换句话说就是&#xff0c;大家…...

rk3588/3576板端编译程序无法运行视频推理

图片推理可以&#xff0c;但是视频不行&#xff0c;运行视频推理报错&#xff1a;segment fault. 我遇到的问题原因是ffmpeg安装有问题&#xff0c;可以先在板端运行&#xff1a;ffmpeg -version ffmpeg version 4.2.4-1ubuntu1.0firefly6 Copyright (c) 2000-2020 the FFmpe…...

静态库与动态库区别

生成方式 静态库&#xff1a;生成静态库时&#xff0c;源代码编译后生成目标文件&#xff08;.o或.obj&#xff09;&#xff0c;然后将这些目标文件打包成一个静态库文件&#xff08;如&#xff1a;.lib或.a&#xff09;。 动态库&#xff1a;生成动态库时&#xff0c;源代码编…...

鸿蒙-Canvas-图片滑动验证

文章目录 过程绘制形状方式详细解释定义变量布局整图Canvas需要滑动的形状 需要处理图片的方式处理抠图绘制抠出来的图 总结 群里有朋友问图片滑块验证码怎么做&#xff0c;就是一张图上扣出来一块&#xff0c;然后拖动这一小块完成拼图。 第一个想法就是偷懒一下&#xff1a;直…...

Python应用算法之贪心算法理解和实践

一、什么是贪心算法&#xff1f; 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种简单而高效的算法设计思想&#xff0c;其核心思想是&#xff1a;在每一步选择中&#xff0c;都采取当前状态下最优的选择&#xff08;即“局部最优解”&#xff09;&#xff0c;希望通…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...