Tomcat理论(Ⅰ)

目录

服务器流程图一览

一、JavaWeb前奏(了解)

1. C/S结构

 2. B/S结构

 3. 静态网页&动态网页

4.常见的网页

5.Web服务器

知名服务器:

​编辑

 二、Tomcat安装(熟练)

1.Tomcat概述

2.Tomcat的作用

 3.Tomcat安装

4.Tomcat测试

3.Tomcat分析(熟练)

1.Tomcat目录结构

2.Tomcat修改端口号

3.Tomcat结构重点


早在自搭建Tomcat(一)---Socket&ServerSocket-CSDN博客  这篇博客起,一共有六篇博客中详细阐述了手写搭建Tomcat的代码全过程,在此篇博客中讲解一下服务器的一些理论知识。

服务器流程图一览

首先上面是学习服务器理论知识的一份思维导图。

一、JavaWeb前奏(了解)

1. C/S结构

C/S 结构即客户端/服务器(Client/Server),例如QQ就是C/S结构的。我们每个 人电脑上都需要安装QQ的客户端,客户端软件向服务器端软件发送请求,服务器端给客户 端返回响应。

但是,因为客户端需要不断的更新,用户使用起来就比较麻烦。现在的C/S结构的客 户端已经好多了,可以提示用户更新,用户只需要点击更新就可以了。最早时需要用户自己 去官网上下载最新客户端,然后把老版本卸载,再去安装新版本。 

 2. B/S结构

B/S 结构即浏览器/服务器(Browser/Server),例如网站都是B/S结构的。当然, 网站也只是B/S结构体系软件中的一种而已。网上银行也都是B/S结构的!

B/S 结构的好处在于不需要用户更新客户端,客户端只需要有一个浏览器就OK。当软 件需要更新时,开发人员只需要关心服务器端就行。就像你在浏览器中访问百度时,发现百 度的主页发生了变化,但你也不需要更新什么。

 3. 静态网页&动态网页

早期在Internet上都是静态网页,即html页面。静态网页的数据都是不能自动变 化的,例如网页上的当前用户信息:“欢迎XXX登录本系统”,这说明当前用户名为XXX。 如果有其他用户登录系统就应该显示其他用户的名字,而且无需修改页面!说白一点,用户 名应该是变量,而不是常量!这是静态网页做不到的!

动态网页可以中包含变量,数据的变化就不是问题了(就比如将上面那个“欢迎XXX登录本系统”的例子连接上JDBC,并用cookie动态改变用户名,那么就是动态页面)。但动态网页只能在服务器端使用, 客户端浏览器只能识别静态网页。所以,如果用户请求的是动态网页,那么就需要服务器先 把动态网页转换成静态网页发送给客户端浏览器!

动态网页必须有服务器来处理。

4.常见的网页

  • 静态网页:

    • htm、html

  • 动态网页:

    • php、asp、aspx

    • jsp、.do、.action

我们要学习的是JSP(Javaserverpages),与其相关的是do(struts1)、action (struts2)

5.Web服务器

Web 服务器的作用是接收客户端的请求,给客户端作出响应。

知名服务器:

  • Tomcat (Apache):用来开发学习使用:免费,开源

  • JBoss (Redhat 红帽):

  • Weblogic (Oracle):要钱的!使用 Tomcat 开发,项目写完了,放到 Weblogic 上运行;

  • Websphere (IBM):要钱的!与 Weblogic 相似。

 二、Tomcat安装(熟练)

1.Tomcat概述

Tomcat 服务器由Apache提供,开源免费。开发学习使用最佳选择。安装Tomcat 之前需要先安装JDK,其实无论哪一种JavaWeb服务器都需要先安装JDK。我们现在使用 的Tomcat版本可以是Tomcat8.5或Tomcat9。

Tomcat6 支持Servlet2.5;

Tomcat7,8,9 支持Servlet3.0;

2.Tomcat的作用

当用户通过发送过来一个请求(通常是浏览器请求)后,Tomcat来接收请求,然后给用户返回响应(通常会是HTML,或是文件、图片等)。

 3.Tomcat安装

4.Tomcat测试

测试 Tomcat 需要在浏览器中输入:http://localhost:8080,或者是 http://127.0.0.1:8080。127.0.0.1 表示本机的IP地址,localhost表示本机的 主机名。

如果其他机器需要访问,那么要把localhost使用本机IP地址替换。

假如我的IP是192.168.1.100,你们要访问我机器上的Tomcat,那么需要在你们 的浏览器中访问:http://192.168.1.100:800

项目被访问到的必要条件 。

3.Tomcat分析(熟练)

1.Tomcat目录结构

有必要了解一下Tomcat的目录结构:
bin:该目录下存放的是可执行文件,有startup.bat和shutdown.bat文件, startup.bat 用来启动Tomcat,但需要先配置JAVA_HOME和shutdown.bat 用来停止Tomcat;

在此就引申出来一个问题:配置环境变量的意义?

  1. 提供灵活性和便捷性:环境变量可以存储程序所需的配置信息,使得程序在运行时能够动态地获取资源路径(如bin目录)而无需硬编码固定的路径。这样,程序可以在不同的系统环境或场景下灵活运行,无需手动修改代码中的路径信息,从而实现随时随地的调用。

  2. 增强系统的安全性:通过环境变量管理配置信息,可以避免直接暴露敏感的系统路径或配置细节,从而在一定程度上保护系统的安全性和隐私性。

 conf:这是一个非常非常重要的目录,这个目录下有三个最为重要的文件:

①server.xml

  • 功能:配置整个服务器的信息。
  • 用途:例如,可以通过修改server.xml来设置服务器的端口号、定义虚拟主机、配置连接器(Connector)等。
  • 重要性:它是服务器的核心配置文件,决定了服务器的基本运行参数和架构。

②web.xml

  • 功能:部署描述符文件。
  • 用途:定义了Web应用程序的全局配置信息,包括Servlet映射、过滤器(Filter)、监听器(Listener)等。
  • MIME类型web.xml中还注册了许多MIME(Multipurpose Internet Mail Extensions)类型,这些类型用于说明文档的内容类型。

MIME(Multipurpose Internet Mail Extensions)类型是一种用于标识文件类型和格式的网络标准。它通过一个字符串(如text/htmlimage/jpeg)告诉客户端(如浏览器)如何处理接收到的数据,例如显示网页、渲染图片或下载文件。MIME类型由类型(如textimage)和子类型(如htmljpeg)组成,广泛应用于Web开发和网络通信中,确保数据正确传输和解析。

③context.xml

  • 功能:定义上下文(Context)级别的配置。
  • 用途:用于配置特定Web应用程序的运行环境,例如资源链接(Resource Links)、环境变量(Environment Variables)等。
  • 重要性:它为每个Web应用程序提供了独立的配置选项,使得应用程序可以独立于服务器全局配置运行,增强了灵活性和可维护性。

 lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的 jar 文件,可以把它放到这个目录中,当然也可以把项目依赖的jar文件放到这 个目录中,这个目录中的jar所有项目都可以共享之; 

logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动 Tomcat 时有错误,那么异常也会记录在日志文件中。

temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除! 

webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录 下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。  

work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当 客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再 编译Java文件生成class文件,生成的java和class文件都会存放到这个目 录下。

LICENSE:许可证。

NOTICE:说明文件。

你应该已经发现,访问ROOT项目时无需给出项目名,其实localhost是一个主 机名,每个主机都会对应一个项目空间,localhost对应的就是Tomcat目录下的 webapps,每个项目空间都可以有一个名为ROOT项目,这个ROOT项目被访问时无需给出 项目名称。

2.Tomcat修改端口号

打开conf\server.xml(这里面存放着服务器配置信息)

http 默认端口号为80,也就是说在URL中不给出端口号时就表示使用80端口。当 然你也可以修改为其它端口号。修改之后必须重新启动服务器

80 端口是默认的端口,如果使用80端口访问时就可以省略端口。

如果我们改成80端口,访问时就可以不加端口号。http://localhost/

项目提供给其他同学访问的必要条件:

1. 和其他同学在同一局域网内或本机在公网上有固定IP

2. Web项目部署到tomcat后,如果使用80端口的话,需要进行公安部备案(百度搜索)

引申问题:如何查看本机IP地址?  终端输入ipconfig查看 。

注:127.0.1和localhost代表本机,仅限于本机使用,如果想让其他人访问自己的电脑,需要用到IP地址。

3.Tomcat结构重点

bin、conf、webapps、work。

bin 目录中东西我们只关心启动和停止 Tomcat,现在大家也应该掌握了!

webapps 目录下存放的是项目,每个文件夹都对应一个项目,而且在访问项目时,其中包含了项目名,而项目名往往都对应项目目录名。这个也应该可以掌握了!还有就是 JavaEE Web 项目的目录结构,这个必须必须背下来!

work:这个东西有点小难度,现在只需要知道它存放的文件是通过 webapps 目录下的项目在运行时产生的,最终运行的都是 work 目录下的文件。这个目录下的东西可以删除,然后再次运行时还会产生!

上述就是有关Tomcat的相关理论知识。 

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

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

相关文章

如何使用 DeepSeek R1 构建开源 ChatGPT Operator 替代方案

开源大型语言模型(LLMs)的兴起使得创建 AI 驱动的工具比以往任何时候都更容易,这些工具可以与 OpenAI 的 ChatGPT Operator 等专有解决方案相媲美。在这些开源模型中,DeepSeek R1 以其强大的推理能力、自由的可访问性和适应性而脱…

使用Docker Desktop部署GitLab

1. 环境准备 确保Windows 10/11系统支持虚拟化技术(需在BIOS中开启Intel VT-x/AMD-V)内存建议≥8GB,存储空间≥100GB 2. 安装Docker Desktop 访问Docker官网下载安装包安装时勾选"Use WSL 2 instead of Hyper-V"(推荐…

【复习】Java集合

集合概念 集合与数组 数组是固定长度;集合是动态长度的数据结构,需要动态增加或删除元素 数组可以包含基本数据类型和对象;集合只能包含对象 数组可以直接访问元素;集合需要通过迭代器访问元素 线程安全的集合? …

vue3 文件类型传Form Data数据格式给后端

在 Vue 3 中,如果你想将文件(例如上传的 Excel 文件)以 FormData 格式发送到后端,可以通过以下步骤实现。这种方式通常用于处理文件上传,因为它可以将文件和其他数据一起发送到服务器。 首先,创建一个 Vue…

使用 INFINI Console 配置集群监控 Webhook 通知指南

在集群管理中,监控关键指标如CPU、内存、磁盘、JVM等是至关重要的。对于Easysearch及ES生态系统,还需要关注集群本身的指标,例如搜索延迟、集群状态、节点移除等。INFINI Console不仅提供了默认的监控指标,还支持用户自定义监控项…

WPF的页面设计和实用功能实现

目录 一、TextBlock和TextBox 1. 在TextBlock中实时显示当前时间 二、ListView 1.ListView显示数据 三、ComboBox 1. ComboBox和CheckBox组合实现下拉框多选 四、Button 1. 设计Button按钮的边框为圆角,并对指针悬停时的颜色进行设置 一、TextBlock和TextBox…

二级公共基础之数据结构与算法篇(八)排序技术

目录 前言 一、交换类排序 1.冒泡排序法 1. 冒泡排序的思想 2. 冒泡排序的实现步骤 3. 示例 4. 冒泡排序的特点 2.快速排序 1. 快速排序的核心思想 2. 快速排序的实现步骤 3. 示例代码(C语言) 4. 快速排序的特点 二、插入类排序 1. 简单插入排序 1.简单插入排…

记录一次 ALG 的处理过程

前几天朋友找我帮忙,说碰到很大困难了,实际上,不过如此 现象是这样的: FreeSWITCH mod_unimrcp 工作不正常 FS 和 mrcp-server 两边同时抓包,看到的是: sip 流程正常 FS TCP 连接到 mccp-server 失败&…

【Linux网络编程】IP协议格式,解包步骤

目录 解析步骤 1.版本字段(大小:4比特位) 2.首部长度(大小:4比特位)(单位:4字节) 🍜细节解释: 3.服务类型(大小:8比特…

CSDN文章质量分查询系统【赠python爬虫、提分攻略】

CSDN文章质量分查询系统 https://www.csdn.net/qc 点击链接-----> CSDN文章质量分查询系统 <------点击链接 点击链接-----> https://www.csdn.net/qc <------点击链接 点击链接-----> CSDN文章质量分查询系统 <------点击链接 点击链…

HTML应用指南:利用GET请求获取全国泸溪河门店位置信息

随着新零售业态的快速发展,门店位置信息的获取变得越来越重要。作为新兴烘焙品牌之一,泸溪河自2013年在南京创立以来,一直坚持“健康美味,香飘世界”的企业使命,以匠人精神打造新中式糕点。为了更好地理解和利用这些数据,本篇文章将深入探讨GET请求的实际应用,并展示如何…

如何在 React 中测试高阶组件?

在 React 中测试高阶组件可以采用多种策略&#xff0c;以下是常见的测试方法&#xff1a; 1. 测试高阶组件返回的组件 高阶组件本身是一个函数&#xff0c;它返回一个新的组件。因此&#xff0c;可以通过测试这个返回的组件来间接测试高阶组件的功能。通常使用 Jest 作为测试…

R语言Stan贝叶斯空间条件自回归CAR模型分析死亡率多维度数据可视化

全文链接&#xff1a;https://tecdat.cn/?p40424 在空间数据分析领域&#xff0c;准确的模型和有效的工具对于研究人员至关重要。本文为区域数据的贝叶斯模型分析提供了一套完整的工作流程&#xff0c;基于Stan这一先进的贝叶斯建模平台构建&#xff0c;帮助客户为空间分析带来…

Casbin 权限管理介绍及在 Go 语言中的使用入门

引言 在现代软件开发过程中&#xff0c;权限管理是一个至关重要的环节&#xff0c;它关系到系统的安全性和用户体验。Casbin 是一个强大的访问控制库&#xff0c;支持多种访问控制模型&#xff0c;如 ACL&#xff08;访问控制列表&#xff09;、RBAC&#xff08;基于角色的访问…

快速入门——第三方组件element-ui

学习自哔哩哔哩上的“刘老师教编程”&#xff0c;具体学习的网站为&#xff1a;10.第三方组件element-ui_哔哩哔哩_bilibili&#xff0c;以下是看课后做的笔记&#xff0c;仅供参考。 第一节 组件间的传值 组件可以有内部Data提供数据&#xff0c;也可由父组件通过prop方式传…

【算法通关村 Day7】递归与二叉树遍历

递归与二叉树遍历青铜挑战 理解递归 递归算法是指一个方法在其执行过程中调用自身。它通常用于将一个问题分解为更小的子问题&#xff0c;通过重复调用相同的方法来解决这些子问题&#xff0c;直到达到基准情况&#xff08;终止条件&#xff09;。 递归算法通常包括两个主要…

朴素贝叶斯法

文章目录 贝叶斯定理朴素贝叶斯法的学习与分类条件独立假设朴素贝叶斯的后验概率最大化准则朴素贝叶斯的基本公式 朴素贝叶斯法的参数估计极大似然估计 贝叶斯定理 前置知识&#xff1a;条件概率、全概率、贝叶斯公式 推荐视频&#xff0c;看完视频后搜索博客了解先验概率、后…

《A++ 敏捷开发》- 20 从 AI 到最佳设计

“我们现在推行AIGC&#xff0c;服务端不需要UI交互设计的用AI自动产出代码&#xff0c;你建议的结对编程、TDD等是否还适用&#xff1f;” 这两年AI确实很火&#xff0c;是报纸、杂志的热门话题。例如&#xff0c;HBR杂志从2024年9月至2025年二月份3期&#xff0c;里面有接近一…

GO系列-IO 文件操作

os io 判断文件是否存在 func fileExist(filePath string) (bool, error) {_, err : os.Stat(filePath)if err nil {return true, nil}if os.IsNotExist(err) {return false, nil}return false, &CheckFileExistError{filePath} } 读取文件内容 func readFileContext(…

rs485协议、电路详解(保姆级)

起源 RS-485即Recommended Standard 485 协议的简写。1983年被电子工业协会(EIA)批准为一种通讯接口标准. 数据在通信双方之间传输&#xff0c;本质是传输物理的电平&#xff0c;比方说传输5V的电压 -1V的电压信号&#xff0c;这些物理信号在传输过程中会受到很多干扰&#x…