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服务器返回给了用户一个资源文件…

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

视觉分析之边缘检测算法

9.1 Roberts算子 Roberts算子又称为交叉微分算法,是基于交叉差分的梯度算法,通过局部差分计算检测边缘线条。 常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。 其缺点是对边缘的定位…

DuodooBMS源码解读之 sale_change模块

销售变更模块用户使用手册 一、模块概述 本扩展模块主要包含两个主要的 Python 文件:sale_change/report/sale_change_report.py 和 sale_change/wizard/sale_change_download.py,提供了销售变更报表查看和销售变更单下载的功能。以下是详细的使用说明…

OpenCV形态学操作

1.1. 形态学操作介绍 初识: 形态学操作是一种基于图像形状的处理方法,主要用于分析和处理图像中的几何结构。其核心是通过结构元素(卷积核)对图像进行扫描和操作,从而改变图像的形状和特征。例如: 腐蚀&…

力扣算法-1

力扣算法 1 两数之和 给定一个整数数组nums和一个整数目标值target,请你在数组中找出和为目标值target的那两个整数,返回他们的数组下标。 (1)暴力枚举 (枚举数组每一个数x,再寻找数组中是否存在 targe…

pyside6学习专栏(三):自定义QLabel标签扩展类QLabelEx

标签是界面设计中最常用的控件,本文演示了如何基于PySide6的QLabex控件类扩展定义QLabelEX类,以实现更少的编码完成各种图像、彩色文本、动画的加载和显示,丰富界面显示 本示例演示了QLabel和其扩展类QLabelEx分别显示文本、图像、动画的使用…

从0到1:固件分析

固件分析 0x01 固件提取 1、从厂商官网下载 例如D-link的固件: https://support.dlink.com/resource/products/ 2、代理或镜像设备更新时的流量 发起中间人攻击MITM #启用IP转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables,将目…

使用 Spring Boot 和 Canal 实现 MySQL 数据库同步

文章目录 前言一、背景二、Canal 简介三、主库数据库配置1.主库配置2.创建 Canal 用户并授予权限 四.配置 Canal Server1.Canal Server 配置文件2.启动 Canal Server 五.开发 Spring Boot 客户端1. 引入依赖2. 配置 Canal 客户端3. 实现数据同步逻辑 六.启动并测试七.注意事项八…

Linux系统配置阿里云yum源,安装docker

配置阿里云yum源 需要保证能够访问阿里云网站 可以先ping一下看看(阿里云可能禁ping,只要能够解析为正常的ip地址即可) ping mirrors.aliyun.com脚本 #!/bin/bash mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos…

后端开发:开启技术世界的新大门

在互联网的广阔天地中,后端开发宛如一座大厦的基石,虽不直接与用户 “面对面” 交流,却默默地支撑着整个互联网产品的稳定运行。它是服务器端编程的核心领域,负责处理数据、执行业务逻辑以及与数据库和其他后端服务进行交互。在当…

银河麒麟系统安装mysql5.7【亲测可行】

一、安装环境 cpu:I5-10代; 主板:华硕; OS:银河麒麟V10(SP1)未激活 架构:Linux 5.10.0-9-generic x86_64 GNU/Linux mysql版本:mysql-5.7.34-linux-glibc2.12-x86_64.ta…

从零开始学习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.一级子模块和二级子模块的映射关…

【回溯算法2】

力扣17.电话号码的字母组合 链接: link 思路 这道题容易想到用嵌套的for循环实现,但是如果输入的数字变多,嵌套的for循环也会变长,所以暴力破解的方法不合适。 可以定义一个map将数字和字母对应,这样就可以获得数字字母的映射了…

科普:“Docker Desktop”和“Docker”以及“WSL”

“Docker Desktop”和“Docker”这两个概念既有紧密联系,又存在一定区别: 一、联系 核心功能同源:Docker Desktop 本质上是基于 Docker 核心技术构建的。Docker 是一个用于开发、部署和运行应用程序的开源平台,它利用容器化技术…

Flutter 网络请求与数据处理:从基础到单例封装

Flutter 网络请求与数据处理:从基础到单例封装 在 Flutter 开发中,网络请求是一个非常常见的需求,比如获取 API 数据、上传文件、处理分页加载等。为了高效地处理网络请求和数据管理,我们需要选择合适的工具并进行合理的封装。 …

虚拟表格实现全解析

在数据展示越来越复杂的今天,大量数据的渲染就像是“满汉全席”——如果把所有菜肴一次性摆上桌,既浪费资源也让人眼花缭乱。幸运的是,我们有两种选择: 自己动手:通过二次封装 Element Plus 的表格组件,实…

QT 读写锁

一、概述 1、读写锁是一种线程同步机制,用于解决多线程环境下的读写竞争问题。 2、读写锁允许多个线程同时获取读锁(共享访问),但只允许一个线程获取写锁(独占访问)。 3、这种机制可以提高并发性能&…

2025 vue3面试题汇总,通俗易懂

一、基础概念与核心特性 1. Vue3 相比 Vue2 的改进(通俗版) 问题:Vue3 比 Vue2 好在哪? 答案: 更快: Proxy 代理:Vue2 的响应式像“逐个监听保险箱”(每个属性单独监听&#xff0…

第5章:在LangChain中如何使用AI Services

这篇文章详细介绍了 LangChain4j 中的 AI Services 概念,展示了如何通过高层次的抽象来简化与大语言模型(LLM)的交互。AI Services 的核心思想是隐藏底层复杂性,让开发者专注于业务逻辑,同时支持聊天记忆、工具调用和 …

二叉树(数据结构)

二叉树 二叉树也是用过递归定义的结构 先序遍历又称前序遍历 ​​ ​​ 按照先序遍历的方法去手算处理这个二叉树 ​​ 先A B C 再 A B D E C(也就是把B换成BDE再放进去) 再 A B D E C F 看这个插入的方法要掌握像二叉树这样向一个…