大数据------JavaWeb------Tomcat(完整知识点汇总)
Web服务器——Tomcat
- Web服务器定义
- 它是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更便捷
- Web服务器主要功能
- 封装HTTP协议操作,简化开发
- 将Web项目部署到服务器中,提供网上信息浏览服务
- Tomcat
- 是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范
- 它也被称为Web容器、Servlet容器(Servlet需要依赖于Tomcat才可运行)
- JavaEE(Java Enterprise Edition)
- 为java企业版。指的是Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
Tomcat基本使用
Tomcat安装
-
Tomcat下载(以Tomcat9.x版本为例)
-
进入官网,查看目前Tomcat官方支持的Tomcat版本及其对应的jdk版本

-
下载Tomcat9

-
将下载后的压缩包解压到本地即可安装完成
-
-
Tomcat目录中各子目录的作用


-
Tomcat环境配置
-
高级系统设置→环境变量→单击系统变量中的新建→变量名设置为
CATALINA_HOME,变量值设置为自己的Tomcat安装目录

-
找到系统变量中的Path,双击打开→单击新建→输入
%CATALINA_HOME%\bin,然后一路单击确定即可

-
-
Tmcat卸载
- 直接删除Tomcat安装的目录即可卸载
Tomcat启动及关闭
-
Tomcat启动
-
双击bin目录下的startup.bat后会出现Tomcat控制台运行窗口

-
启动成功判断:在浏览器输入:localhost:8080,若出现Tomcat窗口则说明启动成功,如图所示

-
-
Tomcat关闭
- 强制关闭:直接
x掉控制台运行窗口 - 正常关闭一:单击bin目录下的shutdown.bat进行关闭
- 正常关闭二:
Ctrl+C
- 强制关闭:直接
-
Tomcat启动时可能出现的问题
-
Tomcat控制台中文乱码 :修改conf/logging.properties中的如下代码(若UTF-8乱码则改为GBK)
java.util.logging.ConsoleHandler.encoding = UTF-8控制台乱码如图所示

更改编码格式后,乱码问题即可解决
-
端口号冲突(其他程序将Tomcat的端口号占用) :找到对应程序将其关掉即可

-
启动窗口一闪而过 :检查JAVA_HOME环境变量是否正确配置
-
Tomcat文件配置
-
Tomcat配置
-
修改Tomcat默认启动端口号(端口号的取值范围是:
0~65535) :打开conf/server.xml- server.xml中默认启动端口号为8080,如下所示
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxParameterCount="1000"/>- 若将Tomcat端口号改为80,则将来访问Tomcat时就不用再输入端口号(原因:HTTP协议默认端口号为80),如下所示
<Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxParameterCount="1000"/>此时启动成功判断:直接在浏览器输入localhost然后回车即可,不需要再输入端口号若出现Tomcat窗口则说明启动成功,如图所示

-
Tomcat部署项目
-
将项目放到webapps目录下即可部署完成
-
示例:将hello项目放到webapps下,此时部署完成。在该hello目录下有个a.html页面,此时即可打开浏览器输入:localhost:8080/hello/a.html访问该页面,若在浏览器中成功访问该页面则说明部署成功



-
-
一般JavaWeb项目会被打包成war包 (idea可以生成war包),然后将war包放到webapps目录下,Tomcat会自动将war文件解压缩到webapps目录下
-
将压缩后的JavaWeb项目haha.war复制到webapps目录下,此时会自动将该war包解压缩

-
此时即可打开浏览器输入:localhost:8080/haha/a.html访问该页面,若在浏览器中成功访问该页面则说明部署成功

-
IDEA创建Maven Web项目
Web项目结构
-
Web项目结构分类
-
开发中的项目


-
开发完成部署的Web项目

- 开发中的项目完成后通过执行Maven打包命令
package,可以获取到开发完成部署的Web项目的war包(注意该war包不会自动到webapps目录下,需要自己手动转移) - 编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下
- pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下
- 开发中的项目完成后通过执行Maven打包命令

-
创建Maven Web项目
使用骨架方式创建
-
步骤
- 选择Web项目骨架创建项目
- 删除pom.xml多余的坐标
- 补齐缺失的目录结构
-
使用骨架方式创建—方式一
-
选择Web项目骨架创建项目 :File→New→Project→Mavne Archetype,然后按图示写入信息,最后单击Create


-
删除pom.xml多余的坐标 :删减为如下代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>MavenWebDemo</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version> </project>
注意:
<packaging>war</packaging>代表打包方式,标签体为war时打包为Web项目;标签体为jar时打包为jar包方式 -
补齐缺失的目录结构
-
右键src→New→Directory→双击自己需要的目录


-
右键test→New→Directory→双击自己需要的目录


-
右键webapp→New→Directory→输入html回车


-
同理即可将Web项目结构补充完成,最终形式如图所示

-
-
-
使用骨架方式创建—方式二
- 选择Web项目骨架创建项目 :File(或右上角设置按钮)→Project Structure→Modules,然后按图示操作


-
删除pom.xml多余的坐标 :删减为如下代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>MavenWebDemo</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version> </project>
注意:
<packaging>war</packaging>代表打包方式,标签体为war时打包为Web项目;标签体为jar时打包为jar包方式 -
补齐缺失的目录结构
- 按照使用骨架方式创建的方式一进行目录及文件的补充,将其补充为标准的Web项目结构即可,如图所示

不使用骨架方式创建
-
步骤
- 选择Web项目骨架创建项目
- pom.xml中添加打包方式为war
- 补齐缺失的目录结构
-
具体步骤如下
-
创建一个标准的Maven项目(创建方式详见Maven部分),然后在pom.xml文件中添加Web项目的打包方式,添加完打包方式后单击刷新, 如图所示

-
补齐缺失的目录结构
-
File(或右上角设置按钮)→Project Structure→Facets,然后按图示操作

-
创建webapp目录


-
创建webapp目录下的子目录及文件


-
手动右键→New→Directory补齐其他缺失文件即可

-
-
IDEA中使用Tomcat
-
IDEA若不配置Tomcat的麻烦之处
IDEA若不配置Tomcat则需要在使用Maven中的
package命令手动将Web项目打包成war包,并找到该Web包的位置将其转移到Tomcat目录下的webapps目录下完成项目部署 -
IDEA配置Tomcat方式一:将本地的Tomcat集成到IDEA中,然后进行项目部署
-
配置本地Tomcat


-
部署项目


-
Tomcat集成到IDEA中的成功性测试
-
创建一个a.html文件并写入简单页面代码,然后单击启动按钮
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa </body> </html>
-
浏览器页面为空或者HTTP状态404(如图一、图二所示),原因是页面打开的是该项目的根目录,我们需要手动将url补充为
http://localhost:8080/MavenWebDemoThree_war/html/a.html,如图三所示。


-
若不想手动添加url,则需要修改Tomcat的启动路径,如图所示

-
-
-
IDEA配置Tomcat方式二:使用Tomcat Maven插件
-
pom.xml中添加Tomcat插件:
Alt+Insert→Plugin Template,然后单击刷新按钮即可添加成功<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>MavenWebDemoThree</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><build><plugins><!-- Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins></build> </project>

-
若浏览器页面为空或者HTTP状态404,则处理方式有两种
-
手动将url补充为
http://localhost:8080/MavenWebDemoThree_war/html/a.html, -
配置tomcat插件代码参数,如下:
<build><plugins><!-- Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port><!--设置访问端口号--></port><path><!--设置访问路径--></path></configuration></plugin></plugins></build>
-
-
-
IDEA中使用Tomcat的两种方式注意点
-
设置访问路径只能设置到项目访问路径(即虚拟目录),不能设置到项目访问路径下的子目录,因为虚拟目录下的子目录属于核心目录,若没有这些目录则Web项目无法运行成功

-
相关文章:
大数据------JavaWeb------Tomcat(完整知识点汇总)
Web服务器——Tomcat Web服务器定义 它是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更便捷 Web服务器主要功能 封装HTTP协议操作,简化开发将Web项目部署到…...
LMDeploy笔记
随谈模型部署 模型部署包含的内容很多,来聊聊。 访存bottleneck 首先,基于transformer的计算是访存密集型任务。 so? 过去,我们表达模型的性能,通常会用ops,macs这些指标,也计算量来衡量模型的推理时间ÿ…...
Unity 状态机
文章目录 前言一、状态机二、应用1、场景切换2、人物行为切换3、宝箱、机关切换4、AI 三、人物行为总结 前言 提到Unity状态机,接触不久的开发者会想到Unity的动画状态机,而对于老油条来说,可能会回忆起自己实现的动画状态机。当然ÿ…...
一毛钱不到的FH8208C单节锂离子和锂聚合物电池一体保护芯片
前言 目前市场上电池保护板,多为分体方案,多数场合使用没有问题,部分场合对空间有进一步要求,或者你不想用那么多器件,想精简一些,那么这个芯片就很合适,对于充电电池来说,应在使用…...
python数据可视化:显示两个变量间的关系散点图scatterplot()
【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python数据可视化: 显示两个变量间的关系 散点图 scatterplot() [太阳]选择题 请问关于以下代码表述错误的选项是? import seaborn as sns import matplotlib.pyplot …...
【QT教程】QT6硬件高级编程入门 QT硬件高级编程
QT6硬件高级编程入门 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看…...
Android 蓝牙实战——蓝牙电话通话状态同步(二十四)
前面分析了蓝牙电话通话状态的广播,我们可以在蓝牙电话中实时监听蓝牙电话的状态,但如果是其他音乐类 APP 呢,在播放的时候也需要知道当前是否有通话正在进行,但是有完全没必要实时监听电话的状态,这就需要一个获取通话状态的方法。 一、通话状态处理 1、CallsManager …...
docker 指定根目录 迁移根目录
docker 指定根目录 迁移根目录 1、问题描述2、问题分析3、解决方法3.1、启动docker程序前就手动指定docker根目录为一个大的分区(支持动态扩容),事前就根本上解决根目录空间不够问题3.1.0、方法思路3.1.1、docker官网安装文档3.1.2、下载docker安装包3.1.3、安装doc…...
React 项目报错解决办法收录
React 使用 引入文件报错 (react 别名配置craco) react ,vue 初始项目都是不支持 别名引入文件的。 vue 一般项目初始化的时候会 在 vue.config.js 文件中配置好,所以不需要我们自己配置react 初始化的时候是没有配置的, 需要我们自己配置 …...
Linux专题-Makefile(1)
1.Makefile中的注释使用 # 2. Makefile中的静默执行。 makefile中,默认情况下执行一行命令前会先把这一行命令打印出来,然后再执行这条命令。如果不想看到打印的命令,则可以使用静默执 行的功能,即仅打印出命令执行的结果。使用方…...
机器学习算法应用——CART决策树
CART决策树(4-2) CART(Classification and Regression Trees)决策树是一种常用的机器学习算法,它既可以用于分类问题,也可以用于回归问题。CART决策树的主要原理是通过递归地将数据集划分为两个子集来构建决…...
Sqli-labs第五,六关
目录 首先找到他们的闭合方式 操作 总结: 第五关根据页面结果得知是字符型但是和前面四关还是不一样是因为页面虽然有东西。但是只有对于请求对错出现不一样页面其余的就没有了。这个时候我们用联合注入就没有用,因为联合注入是需要页面有回显位。如果…...
上海AI Lab开源首个可替代GPT-4V的多模态大模型
与开源和闭源模型相比,InternVL 1.5 在 OCR、多模态、数学和多轮对话等 18 个基准测试中的 8 个中取得了最先进的结果。 上海AI Lab 推出的 InternVL 1.5 是一款开源的多模态大语言模型 (MLLM),旨在弥合开源模型和专有商业模型在多模态理解方面的能力差距…...
Python教程:一文了解PageObject模式
PageObject 模式是一种用于测试自动化的设计模式,它将页面的功能和页面的实现分开,提高了代码的可维护性和可重用性。本文将从基础概念开始,逐步介绍 Python 中的 PageObject 模式,并提供详细的代码示例。 1. 什么是 PageObject 模…...
SpringBoot 启动时查询数据库数据,并赋值给全局变量
创建一个组件 AreaData import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component;import java.u…...
【Python】selenium爬虫常见用法和配置,以及常见错误和解决方法
欢迎来到《小5讲堂》 这是《Python》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言无执行文件代码报错信息错误路径手动下载自动下载 选项配置Ch…...
minio上传文件失败如何解决
1. 做了什么操作 通过接口上传excel文件,返回响应值 2. 错误如图 2. 如何解决 根据错误描述定位到了部署minio的地方minio通过docker部署,找到docker - compose发现配置文件中minio有两个端口,一个是用于api的,一个是用于管理界面…...
Java自动化测试框架--TestNG详解
一. 什么是TestNG TestNG是一个开源的自动化测试框架,它受JUnit和NUnit启发,其中“NG”即表示Next Generation,其功能更强大使用更方便。 二. TestNG配置 2.1 POM文件配置 在maven工程的pom.xml文件中加入以下依赖: <depe…...
【分布式 | 第五篇】何为分布式?分布式锁?和微服务关系?
文章目录 5.何为分布式?分布式锁?和微服务关系?5.1何为分布式?5.1.1定义5.1.2例子5.1.3优缺点(1)优点(2)缺点 5.2何为分布式锁?5.2.1定义5.2.2必要性 5.3区分分布式和微服…...
JavaScript百炼成仙自学笔记——13
函数七重关之六(“new”一个函数) 看个代码: function hello(){console.log(this); } 1、this:也是JavaScript中的一个关键字,永远指向当前函数的调用者 解释一下,有两层意思: ①this要嘛不出现&#…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
