【Java Web】Tomcat服务器

目录

一、Tomcat是什么

二、Tomcat安装

三、Tomcat相关目录

四、Web项目标准目录结构规范

五、Tomcat项目部署方式

六、IDEA关联本地Tomcat

七、HTTP协议

7.1 http的交互方式

7.1.1 http长连接和短连接

7.1.2 http1.1缓存机制

7.2 http数据报文格式

八、常见响应状态码


一、Tomcat是什么

Tomcat是由Apache基金会开发的Web服务器软件,专门用于为Java Web应用程序提供部署和运行的环境。同样由于Tomcat软件也是用java编写的所以Tomcat软件的运行也需要Jre。因此,如果我们想要在网上部署我们用java开发好的web应用程序,就需要首先在电脑上安装Jre、然后安装web服务器软件如:Tomcat、最后将我们开发好的Java web程序部署到web服务器软件Tomcat中。常见的JavaWeb服务器软件有很多,Tomcat只是其中之一。

二、Tomcat安装

  1. 从官网Apache Tomcat® - Welcome!下Tomcat服务软件。

  1. 将下载好的Tomcat压缩包解压到要安装的路径下。

  1. Tomcat软件的运行需要JDK环境,在Tomcat运行时会通过系统的JAVA_HOME环境变量来找到JRE,因此在运行Tomcat之前需要事先为Tomcat软件配置好系统的JAVA_HOME环境变量。

注意:Tomcat10.1.x以上需要JDK11以上版本。

4.找到Tomcat解压后的文件夹,进入bin目录下,运行和关闭Tomcat服务。

注意:在运行Tomcat时会控制台会出现乱码的日志输出,原因是控制台使用的GDK编码,而Tomcat默认设置控制台输出的日志是UTF-8编码。解决办法是进入conf目录,打开logging.properties日志配置文件进行相关修改。

三、Tomcat相关目录

说明:

1、浏览器访问webapps中内置的ROOT项目时,url无需指定项目访问路径而直接跟请求的文件。


2、webapps下的host-manager和manager为管理性项目,用户通过浏览器访问此两个项目需要输入Tomcat的用户名和密码。可以在conf\tomcat-users.xm配置文件中创建用户和密码,只需添加以下标签元素:

Tomcat相关目录:

四、Web项目标准目录结构规范

说明:

1、客户端浏览器在访问Tomcat中已部署的项目时其URL路径格式如下图所示,若不指定访问的具体网页文件则默认是index.html。

五、Tomcat项目部署方式

方式一:直接将编译好的Java web项目放在webapps目录下。

方式二:将编译好的java web项目打包压缩成war包,放在webapps目录下,Tomcat启动后会自动解压war包(本质和方式一相同)。

方式三:可以将项目放在非webapps目录下,在Tomcat中通过其配置文件来指定项目的实际物理路径;这样当Tomcat服务启动时会自动将其配置文件中指定的项目部署到web服务器上。

  1. 在*\apache-tomcat-10.1.19\conf\Catalina\localhost目录下创建和要部署的项目同名的.xml配置文件。在此文件中指定实际项目的所在的物理位置路径以及用户通过浏览器访问项目时需要写的虚拟路径。

六、IDEA关联本地Tomcat

1、建立IDEA和Tomcat的关联。使Java Web工程可以使用Tomcat提供的第三方类库依赖并将app部署到Tomcat上运行。

2、使用IDEA创建一个JavaWeb工程,在工程中编写代码。

①创建一个用于包含其它子模块项目的父工程项目

②在父项目下创建子项目模块moudle

③指定子项目使用的TomCat提供的类库

④为子模块项目添加web目录资源组件。使其成为一个JavaWeb工程。

⑤创建工程相关目录编写开发代码

⑥将resources标记为资源根目录,以便在项目构建时将其与src目录一起编译合并为一个classes目录放在WEB-INF目录中。

⑦将web目录WEB-INF子目录下的lib目录设置为类库,供整个子项目模块使用。

3、使用IDEA将工程构建成一个可发布的app。

4、使用IDEA将构建好的app部署到TomCat中运行。

说明:Tomcat运行时会自动构建项目,然后在将其部署到Tomcat上,只不过在此过程中IDEA并不是直接就将构建好的项目放在Tomcat家目录webapps文件夹下,而是会自动在系统当前用户的家目录路径下生成一个简化的Tomcat目录结构副本,然后将部署的项目以虚拟目录设置浏览器访问路径上下文的方式配置在Tomcat副本配置目录中。然后Tomcat就会读取用户家目录下的副本作为其配置文件来部署构建好的项目。

注意:IDEA控制台使用的GBK字符编码,Tomcat配置文件中设置的日志输出字符编码为utf-8,因此在Tomcat启动时控制台输出的日志会出现乱码。需要在Tomcat其日志配置文件中进行设置为GBK编码。

七、HTTP协议

http协议即超文本传输协议,用于互联网上电脑主机的资源文件共享。

http协议有多个版本,HTTP的第一个标准化版本HTTP/1.1(RFC2068)于1997年初发布,是目前使用最普遍的版本。

支持七种请求方法:OPTIONS,GET,HEAD,POST,PUT,DELETE,和TRACE。

HTTP/1.1 是 HTTP 1.0 的增强:

  • 虚拟主机允许从单个IP地址提供多个域。
  • 持久连接和流水线连接允许Web浏览器通过单个持久连接发送多个请求。
  • 缓存支持节省了带宽并使响应速度更快。HTTP/1.1在接下来的15年左右将非常稳定。
  • 在此期间,出现了HTTPS(安全超文本传输协议)。它是使用SSL/TLS进行安全加密通信的HTTP的安全版本。

7.1 http的交互方式

http的交互方式分为请求和响应。其中请求是指客户端浏览器向服务端发送的数据,响应是服务端根据客户端的请求响应的数据。

7.1.1 http长连接和短连接

从上图可知在http1.0中,客户端向服务端请求获取login.html后,解析login.html文件发现其中还有其他资源文件,于是又需要重新与服务端经历:“三次握手、数据交互、四次挥手”机制来分别获取.css、.js、.png文件。其在解析login.html文件过程中,分别进行多次tcp三次握手、四次挥手机制来获取login.html中包含的求它资源文件,那么这种获取请求文件内的求它资源文件时都要重新与服务端建立tcp连接的机制就被称为短连接。而客户端在获取到向服务端请求的资源后并不会立刻使用四次挥手断开与服务端的连接,而是先解析获取到的文件,如果在解析文件中发现还包含其它的文件则就在向服务端请求获取子文件资源,等客户端解析完文件后,在最后才释放与服务器的连接的过程被称为长连接。显然http1.1长连接相比http1.0短连接, 客户端与服务端数据交互的过程中,tcp连接的交互次数减少了许多、之间传输的数据报文减少了,提高了访问效率。

7.1.2 http1.1缓存机制

客户端在获取到向服务端请求的资源后,会将请求的资源缓存到本地内存中,当客户端下次在向服务端访问同一个网页时,会先检查本地缓存中是否存在此资源,如果存在则就不会在向服务端发起请求获取,而是使用缓存中保存好的资源进行展示,从而减少与服务端资源的请求交互,提高网页的访问速度。

7.2 http数据报文格式

请求时发送的数据被称为请求报文,响应发送的数据被成为响应报文。

其http发送的数据报文格式由:行、头、体构成。

请求报文格式:

响应报文格式:

八、常见响应状态码

响应状态码对浏览器来说很重要,它会告诉浏览器请求获得的响应结果。

  • 200:请求成功。浏览器会把响应体中的内容显示在浏览器中。
  • 302:重定向。表示服务器要求浏览器重新发送一个请求到响应头Location指定的新URL地址来获取资源。
  • 304:表示浏览器请求的此文件使用了本地缓存,从系统本地内存获取得到的。
  • 404:浏览器请求的资源在服务端没有找到,说明客户端向服务端请求了不存在的资源。
  • 405:客户端请求的方式不允许。如:服务端规定某个资源只能使用get请求来获取。
  • 500:服务器找到了请求的资源,但服务器内部出现了问题。如:java代码执行出现异常。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

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

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

相关文章

印刷企业数字工厂管理系统如何保障产品质量

一、引言 随着信息技术的迅猛发展,印刷行业也迎来了数字化转型的浪潮。数字工厂管理系统作为这一转型的核心工具,不仅在提高生产效率、优化资源配置方面发挥了重要作用,更在保障产品质量上扮演着关键角色。本文将深入探讨印刷企业数字工厂管…

浏览器扩展V3开发系列之 chrome.contextMenus 右键菜单的用法和案例

【作者主页】:小鱼神1024 【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.contextMenus 允许开发者向浏览器的右键菜单添加自定义项。 在使用 chrome.contextMenus 之前…

本地读取classNames txt文件

通过本地读取classNames,来减少程序修改代码,提高了程序的拓展性和自定义化。 步骤: 1、输入本地路径,分割字符串。 2、将className按顺序放入vector容器中。 3、将vector赋值给classNmaes;获取classNames.size(),赋值给CLASSES;这样,类别个数和类别都已经赋值完成。…

Python | Leetcode Python题解之第199题二叉树的右视图

题目: 题解: class Solution:def rightSideView(self, root: TreeNode) -> List[int]:rightmost_value_at_depth dict() # 深度为索引,存放节点的值max_depth -1stack [(root, 0)]while stack:node, depth stack.pop()if node is not…

第N8周:seq2seq翻译实战-Pytorch复现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 一、前期准备 from __future__ import unicode_literals, print_function, division from io import open import unicodedata import s…

50、基于NARX神经网络的磁悬浮建模(matlab)

1、NARX神经网络简介 NARX(非线性自回归外部输入)神经网络是一种用于非线性建模和预测的神经网络结构。与传统的自回归模型不同,NARX网络可以接收外部输入来影响输出结果,从而更好地捕捉系统的复杂性和非线性特征。 NARX神经网络…

竞赛选题 python+深度学习+opencv实现植物识别算法系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:4分 🧿 更多…

基于Java微信小程序自驾游拼团设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

27. 高级特性(下)

目录 一、为了类型安全和抽象而使用 newtype 模式二、使用类型别名创建类型同义词2.1 使用type关键赋予现有类型一个别名2.2 减少重复2.3 与Result<T, E>结合使用2.4 从不返回的 never type 三、高级函数和闭包3.1 函数指针3.2 返回闭包 四、宏4.1 宏和函数的区别4.2 mac…

python基础语法 003-3 数据类型元组

1 元组 1.1 元组含义 1.1.1 元组的表示 #元组的表示方法:() names ("xiaoyun", "xiaoming") print(names)--结果------- (xiaoyun, xiaoming) 1.1.2 空元组 #空元组 names () print(type(names)) print(len(names))----------------结果--------- &l…

安装vue开发者工具

浏览器控制台提示&#xff1a; 打开网址 GitHub - vuejs/devtools: ⚙️ Browser devtools extension for debugging Vue.js applications. 点击添加 上图地址&#xff1a;Installation | Vue Devtools 安装好了

群体优化算法---石墨烯优化算法介绍以及在期权定价上的应用(Black-Scholes模型来计算欧式期权的理论价格)

介绍 石墨烯算法是一种新兴的优化算法&#xff0c;灵感来自于石墨烯的结构和特性。石墨烯是一种由碳原子构成的二维蜂窝状晶格结构&#xff0c;具有优异的机械、电学和热学性能。石墨烯算法通过模拟石墨烯原子之间的相互作用和迁移&#xff0c;来求解复杂的优化问题 基本概念…

K8S -理解StatefulSet - 部署有状态应用

什么是 有状态服务和 无状态服务 有状态服务&#xff08;Stateful Service&#xff09;&#xff1a; 有状态服务是指在处理请求期间维护和跟踪用户状态或会话信息的服务。这意味着服务在多个请求之间保持状态&#xff0c;并且需要在请求之间共享和使用这些状态信息。通常&…

Websocket在Java中的实践——握手拦截器

在《Websocket在Java中的实践——最小可行案例》一文中&#xff0c;我们看到如何用最简单的方式实现Websocket通信。本文中&#xff0c;我们将介绍如何在握手前后进行干涉&#xff0c;以定制一些特殊需求。 在《Websocket在Java中的实践——最小可行案例》的基础上&#xff0c;…

PID原理及控制算法详解

文章目录 1. 概念 1.1 PID框图 1.2 具体示例&#xff1a;无人机高度控制 2. PID原理 3. 常用术语 4. 计算过程 4.1 比例控制&#xff08;Proportional&#xff09; 4.2 积分控制&#xff08;Integral&#xff09; 4.3 微分控制&#xff08;Derivative&#xff09; 5.…

windows@文件高级共享设置@网络发现功能@从资源管理器网络中访问远程桌面

文章目录 高级共享设置常用选项其他选项操作界面说明 网络类型检查和设置(专用网络和公用网络)&#x1f47a;Note 高级共享设置和防火墙&#x1f47a;命令行方式使用图形界面方式配置 网络发现网络发现功能的详细介绍网络发现的作用&#x1f47a;网络发现的工作原理启用和配置网…

【Python实战因果推断】2_因果效应异质性2

目录 CATE with Regression Evaluating CATE Predictions CATE with Regression 我想你可能已经预料到了&#xff1a;与应用因果推理中的大多数情况一样&#xff0c;答案往往从线性回归开始。但在走这条路之前&#xff0c;让我们把事情变得更具体一些。假设你在一家遍布全国的…

[A133]uboot启动流程

[A133]uboot启动流程 hongxi.zhu 2024-6-21 1. 第一阶段 lds描述 从u-boot.lds中能找到程序的汇编入口ENTRY(_start) brandy/brandy-2.0/u-boot-2018/u-boot.lds OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUT…

vant组件 顶部下拉刷新和页面底部下拉获取数据+顶部搜索框

1.html部分&#xff08;顶部tab切换无&#xff0c;只有主体list部分&#xff09; <div class"yd" ><!-- yd端 --><!-- 搜索框 --><van-searchv-model"ydsearchvalue"show-actionplaceholder"请输入搜索关键词"search"…

JavaEE之HTTP协议(1)_HTTP基础知识,HTTP 请求、响应格式,方法,状态码

一、HTTP协议 1.1 基本概念: HTTP全称超文本传输协议&#xff0c;是一种无状态的、应用层的协议&#xff0c;它基于请求/响应模型。客户端&#xff08;通常是Web浏览器&#xff09;通过发送HTTP请求到服务器来获取或发送信息&#xff0c;服务器则返回HTTP响应作为回应。HTTP协…