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 网络安全的内涵 随着计算机和网络技术的迅猛发展和广泛普及,越来越多的企业将经营的各种业务建立在Internet/Intranet环境中。于是,支持E-mail、文件共享、即时消息传送的消息和协作服务器成为当今商业社会中的极重要的IT基础设施。然而࿰…...
Linux 性能调优简单指南
一、性能调优概述 Linux 性能调优是系统运维的核心任务之一,目的是通过资源分配、参数优化和瓶颈消除,提升系统运行效率和稳定性。调优需遵循以下原则: 基于数据驱动:使用监控工具精准定位瓶颈分层逐级分析:从硬件到应用的逐层排查变更可回溯:单变量调整并记录结果场景适…...
第十一章: vue2-3 生命周期
创建 挂载 更新 销毁 四个阶段 > 生命周期函数 生命周期钩子 created mounted 创建vue2 的脚手架: vue create vue2_test v-show"isShow" v-if "isShow" 这里的isShow 表示一个函数 let isShow "true" <tem…...
【算法基础】--前缀和
前缀和 一、一维前缀和示例模板[寻找数组的中心下标 ](https://leetcode.cn/problems/tvdfij/description/)除自身以外的数组乘积和可被k整除的子数组 一、一维前缀和 前缀和就是快速求出数组某一个连续区间内所有元素的和。 示例模板 已知一个数组arr,求前缀和 …...
输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索
后端数据代码写于下一篇:输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路 【效果图】:分组展示选项 【去界面操作感受一下】—> 便捷简洁的企业官网 【录制效…...
Web入侵实战分析-常见web攻击类应急处置实验2
场景说明 某天运维人员,发现运维的公司站点被黑页,首页标题被篡改,你获得的信息如下: 操作系统:windows server 2008 R2业务:公司官网网站架构:通过phpstudy运行apache mysqlphp开放端口&…...
DeepSeek:AI商业化的新引擎与未来蓝图
摘要 在人工智能迅猛发展的浪潮中,DeepSeek以其卓越的技术实力和高超的商业化能力崭露头角。作为一款现象级AI产品,它不仅在算法性能上位居行业前列,还通过灵活的定制解决方案渗透到金融、医疗、零售等多个领域。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 模块提供的一个字典类,它和普通字典( dict)的主要区别在于 提供了一个默认值,可以避免在访问字典中…...
《论系统需求分析方法》写作心得 - 系统分析师
系统需求分析方法论述 一、项目概述及本人职责 本人曾参与一项企业级客户关系管理系统(CRM)的开发项目,担任系统分析师的角色。该项目旨在为企业提供一个集客户信息管理、销售过程跟踪、客户服务支持于一体的综合管理平台,以提升…...
Jupyter里面的manim编程学习
1.Jupyterlab的使用 因为我之前一直都是使用的vscode进行manim编程的,但是今天看的这个教程使用的是Jupyter,我也很是好奇这个manim在Jupyter这样的交互式下面会生成怎么样的效果,所以今天尝试了jupyter,并且对于两个进行比较和说…...
Python之装饰器二 带参数的装饰器
前言一、带参数的装饰器二、在装饰器里面传入参数总结 前言 暂无 一、带参数的装饰器 我们知道,不带参数的装饰其实就是在函数的头上添加装饰器时放一个名称,这种写法就默认了装饰器函数调的是被装饰函数自己,换句话说就是,大家…...
rk3588/3576板端编译程序无法运行视频推理
图片推理可以,但是视频不行,运行视频推理报错:segment fault. 我遇到的问题原因是ffmpeg安装有问题,可以先在板端运行:ffmpeg -version ffmpeg version 4.2.4-1ubuntu1.0firefly6 Copyright (c) 2000-2020 the FFmpe…...
静态库与动态库区别
生成方式 静态库:生成静态库时,源代码编译后生成目标文件(.o或.obj),然后将这些目标文件打包成一个静态库文件(如:.lib或.a)。 动态库:生成动态库时,源代码编…...
鸿蒙-Canvas-图片滑动验证
文章目录 过程绘制形状方式详细解释定义变量布局整图Canvas需要滑动的形状 需要处理图片的方式处理抠图绘制抠出来的图 总结 群里有朋友问图片滑块验证码怎么做,就是一张图上扣出来一块,然后拖动这一小块完成拼图。 第一个想法就是偷懒一下:直…...
Python应用算法之贪心算法理解和实践
一、什么是贪心算法? 贪心算法(Greedy Algorithm)是一种简单而高效的算法设计思想,其核心思想是:在每一步选择中,都采取当前状态下最优的选择(即“局部最优解”),希望通…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
