Windows操作系统部署Tomcat详细讲解
Tomcat是一个开源的Java Servlet容器,用于处理Java Web应用程序的请求和响应。以下是关于Tomcat的用法大全:
一、安装Tomcat
- 下载
- 访问Apache Tomcat官方网站(https://tomcat.apache.org/),根据你的操作系统(如Windows、Linux、macOS)和需求选择合适的版本进行下载。例如,对于开发环境,通常选择较新的稳定版本。
- 安装(以Windows为例)
- 解压下载的ZIP文件到你想要安装的目录,如
C:Program FilesApache Tomcat。 - 配置环境变量:将Tomcat的
bin目录路径添加到系统的PATH变量中,这样就可以在命令行中方便地运行Tomcat相关命令。例如,在Windows系统中,通过“控制面板”->“系统和安全”->“系统”->“高级系统设置”->“环境变量”来编辑PATH变量。
- 解压下载的ZIP文件到你想要安装的目录,如
二、启动和停止Tomcat
- 命令行方式(以Windows为例)
- 启动:打开命令提示符,切换到Tomcat安装目录下的
bin目录,运行startup.bat文件。这将启动Tomcat服务器,并且可以在控制台看到启动日志,显示服务器初始化的过程,包括加载各种配置文件和组件。 - 停止:运行
shutdown.bat文件可以停止Tomcat服务器。在停止过程中,服务器会处理完正在进行的请求,然后优雅地关闭。
- 启动:打开命令提示符,切换到Tomcat安装目录下的
- 通过服务方式(以Windows为例)
- 可以将Tomcat安装为Windows服务。在Tomcat的
bin目录下,使用service.bat install命令将其安装为服务。之后,可以通过Windows服务管理器(在“运行”中输入services.msc并回车)来启动、停止和管理Tomcat服务。这种方式适合在服务器环境中使用,使得Tomcat可以在系统启动时自动启动。
- 可以将Tomcat安装为Windows服务。在Tomcat的
三、部署Web应用程序
- 简单部署(将WAR文件部署到webapps目录)
- 对于一个打包好的Web应用程序(通常是一个
.war文件),可以将其直接复制到Tomcat安装目录下的webapps目录中。例如,有一个名为myapp.war的文件,将它放入webapps目录后,Tomcat会自动解压并部署这个应用程序。部署后的应用程序可以通过http://localhost:8080/myapp(假设Tomcat默认端口是8080)来访问,其中myapp是应用程序的上下文路径,它通常和.war文件的名称(去掉.war后缀)相同。
- 对于一个打包好的Web应用程序(通常是一个
- 通过配置文件部署(server.xml)
-
可以在Tomcat的
conf/server.xml文件中配置Web应用程序的部署。找到<Host>标签,在其中添加一个<Context>标签来定义应用程序的部署信息。例如:<Context path="/myapp" docBase="C:/myapp" reloadable="true"/> -
这里
path属性定义了应用程序的上下文路径(访问该应用程序的URL前缀),docBase属性指定了应用程序的实际物理路径(可以是绝对路径或相对于CATALINA_BASE的路径),reloadable属性设置为true表示当应用程序的类文件或配置文件发生变化时,Tomcat会自动重新加载应用程序。
-
- 通过Manager App部署
- Tomcat自带了一个Manager App,可以通过浏览器访问
http://localhost:8080/manager/html(默认需要用户名和密码,在conf/tomcat - users.xml文件中配置用户权限)。 - 在Manager App中,可以上传
.war文件进行部署,还可以查看已部署应用程序的状态、启动和停止应用程序等操作。
- Tomcat自带了一个Manager App,可以通过浏览器访问
四、配置Tomcat
- 端口配置(server.xml)
-
在
conf/server.xml文件中,可以修改Tomcat监听的端口。默认情况下,Tomcat使用8080端口用于HTTP请求。找到以下代码段:<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"/> -
可以将
port属性的值修改为其他端口号,如8081等。如果修改为小于1024的端口(如80),在Linux和macOS系统中可能需要以管理员权限运行Tomcat,因为这些端口是特权端口。
-
- 虚拟主机配置(server.xml)
-
可以在
server.xml文件中配置虚拟主机,使得Tomcat能够根据不同的域名来提供不同的Web服务。例如:<Host name="www.example1.com" appBase="webapps1"unpackWARs="true" autoDeploy="true"><Alias>example1.com</Alias><Context path="" docBase="C:/webapps1/root" /> </Host> <Host name="www.example2.com" appBase="webapps2"unpackWARs="true" autoDeploy="true"><Alias>example2.com</Alias><Context path="" docBase="C:/webapps2/root" /> </Host> -
这里定义了两个虚拟主机,
www.example1.com和www.example2.com,它们分别对应不同的应用程序目录(webapps1和webapps2),当用户访问不同的域名时,Tomcat会根据虚拟主机的配置提供相应的服务。
-
- 日志配置(logging.properties)
-
Tomcat的日志配置文件是
conf/logging.properties。可以在其中配置日志的级别、输出位置等。例如,可以修改控制台日志的级别,将以下行:java.util.logging.ConsoleHandler.level = INFO -
中的
INFO修改为FINE或其他级别(SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST)来调整日志的详细程度。还可以配置将日志输出到文件,通过修改handlers属性和相关的Handler配置部分来实现。
-
五、与开发工具集成
- Eclipse集成
- 在Eclipse中开发Java Web应用程序时,可以很方便地集成Tomcat。首先确保已经安装了Eclipse的Web开发插件(如Eclipse IDE for Enterprise Java Developers)。
- 配置Tomcat:在Eclipse的“Servers”视图中,右键单击并选择“New”->“Server”,然后选择“Apache Tomcat”版本,点击“Next”。在接下来的步骤中,指定Tomcat的安装目录,完成配置。
- 部署应用程序:在Eclipse中开发好Web应用程序后,可以通过右键单击项目,选择“Run As”->“Run on Server”,将应用程序部署到Tomcat服务器并运行,方便进行调试和开发。
- IntelliJ IDEA集成
- 在IntelliJ IDEA中,同样需要先安装支持Web开发的插件。
- 配置Tomcat:在“Run/Debug Configurations”中,点击“+”添加一个“Tomcat Server”配置。在配置对话框中,指定Tomcat的安装目录、JDK版本等信息。
- 部署和运行:将Web应用程序添加到配置的Tomcat服务器中,然后可以通过点击“Run”或“Debug”按钮来启动Tomcat并运行应用程序,方便在开发过程中进行调试和测试。
相关文章:
Windows操作系统部署Tomcat详细讲解
Tomcat是一个开源的Java Servlet容器,用于处理Java Web应用程序的请求和响应。以下是关于Tomcat的用法大全: 一、安装Tomcat 下载 访问Apache Tomcat官方网站(https://tomcat.apache.org/),根据你的操作系统…...
每日Attention学习23——KAN-Block
模块出处 [SPL 25] [link] [code] KAN See In the Dark 模块名称 Kolmogorov-Arnold Network Block (KAN-Block) 模块作用 用于vision的KAN结构 模块结构 模块代码 import torch import torch.nn as nn import torch.nn.functional as F import mathclass Swish(nn.Module)…...
今日写题04work
题目:移除链表元素 两种实现思路 思路一 使用双指针,prev,cur快慢指针解决。当cur不等于val,两个指针跳过。当等于val时,要考虑两种情况,一种是pos删,一种是头删除。 pos删除就是正常情况&am…...
Managed Lustre 和 WEKA:高性能文件系统的对比与应用
Managed Lustre 和 WEKA:高性能文件系统的对比与应用 1. 什么是 Managed Lustre?主要特点:适用场景: 2. 什么是 WEKA?主要特点:适用场景: 3. Managed Lustre 和 WEKA 的对比4. 如何选择 Managed…...
LeetCode541 反转字符串2
一、题目描述 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。具体规则如下: 如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等…...
MAC 系统关闭屏幕/睡眠 后被唤醒 Wake Requests
问题;查看wake 日志 pmset -g log | grep "Wake Requests" 为 Wake Requests [*processdasd requestSleepService...info"com.apple.alarm.user-invisible-com.apple.calaccessd...电源设置命令参考: pmset -g sched //查看定时…...
论文笔记:Multi-Head Mixture-of-Experts
2024 neurips 1 背景 稀疏混合专家(SMoE)可在不显著增加训练和推理成本的前提下提升模型的能力【比如Mixtral 8*7B,表现可以媲美LLaMA-2 70B】 但它也有两个问题 专家激活率低(下图左) 在优化时只有一小部分专家会被…...
vue和Django快速创建项目
一、VUE 1.创建 Vue 3 JavaScript 项目 npm create vitelatest 项目名称 -- --template vue创建 Vue 3 TypeScript 项目 npm create vitelatest 项目名称 -- --template vue-ts 2.然后 cd 项目名称 npm install npm install axios # 发送 API 请求 npm install pinia …...
Java LinkedList(单列集合)
LinkedList 是 Java 中实现了 List 接口的一个类,它属于 java.util 包。与 ArrayList 不同,LinkedList 是基于双向链表实现的,适合于频繁进行插入和删除操作的场景。 1. LinkedList 的基本特性 基于链表实现:LinkedList 使用双向…...
多线程基础面试题剖析
一、线程的创建方式有几种 创建线程的方式有两种,一种是继承Thread,一种是实现Runable 在这里推荐使用实现Runable接口,因为java是单继承的,一个类继承了Thread将无法继承其他的类,而java可以实现多个接口࿰…...
.NET SixLabors.ImageSharp v1.0 图像实用程序控制台示例
使用 C# 控制台应用程序示例在 Windows、Linux 和 MacOS 机器上处理图像,包括创建散点图和直方图,以及根据需要旋转图像以便正确显示。 这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包(版本 1.0.4)添加到.NET Core 3.1/ …...
EasyExcel提取excel文档
目录 一、前言二、提取excel文档2.1、所有sheet----获取得到headerList和总行数2.2、所有sheet----获取合并单元格信息2.3、读取某个sheet的每行数据一、前言 EasyExcel 是阿里巴巴开源的一个高性能 Excel 读写库,相比于 Apache POI 和 JXL,它有明显的优势,特别是在处理大数…...
第十五届蓝桥杯嵌入式省赛真题(满分)
第十五届蓝桥杯嵌入式省赛真题 目录 第十五届蓝桥杯嵌入式省赛真题 一、题目 二、分析 1、配置 2、变量定义 3、LCD显示模块 4、按键模块 5、数据分析和处理模块 1、频率突变 2、频率超限 3、数据处理 三、评价结果 一、题目 二、分析 1、配置 首先是配置cubemx…...
ASP.NET Core Web应用(.NET9.0)读取数据库表记录并显示到页面
1.创建ASP.NET Core Web应用 选择.NET9.0框架 安装SqlClient依赖包 2.实现数据库记录读取: 引用数据库操作类命名空间 创建查询记录结构类 查询数据并返回数据集合 3.前端遍历数据并动态生成表格显示 生成结果:...
【Sceneform-EQR】实现3D场景背景颜色的定制化(背景融合的方式、Filament材质定制)
写在前面的话 Sceneform-EQR是基于(filament)扩展的一个用于安卓端的渲染引擎。故本文内容对Sceneform-EQR与Filament都适用。 需求场景 在使用Filament加载三维场景的过程中,一个3D场景对应加载一个背景纹理。而这样的话,即便…...
LeetCode1706
LeetCode1706 目录 LeetCode1706题目描述示例题目理解问题描述 示例分析思路分析问题核心 代码段代码逐行讲解1. 获取网格的列数2. 初始化结果数组3. 遍历每个球4. 逐行模拟下落过程5. 检查是否卡住6. 记录结果7. 返回结果数组 复杂度分析时间复杂度空间复杂度 总结的知识点1. …...
2517. 礼盒的最大甜蜜度(Maximum Tastiness of Candy Box)
2517. 礼盒的最大甜蜜度(Maximum Tastiness of Candy Box) 问题描述 给定一个正整数数组 price,其中 price[i] 表示第 i 类糖果的价格,另给定一个正整数 k。商店将 k 类不同糖果组合成礼盒出售。礼盒的甜蜜度是礼盒中任意两种糖…...
Golang 的字符编码与 regexp
前言 最近在使用 Golang 的 regexp 对网络流量做正则匹配时,发现有些情况无法正确进行匹配,找到资料发现 regexp 内部以 UTF-8 编码的方式来处理正则表达式,而网络流量是字节序列,由其中的非 UTF-8 字符造成的问题。 我们这里从 G…...
利用ollama 与deepseek r1大模型搭建本地知识库
1.安装运行ollama ollama下载 https://ollama.com/download/windows 验证ollama是否安装成功 ollama --version 访问ollama本地地址: http://localhost:11434/ 出现如下界面 ollama运行模型 ollama run llama3.2 ollama常用操作命令 启动 Ollama 服务…...
Java短信验证功能简单使用
注册登录阿里云官网:https://www.aliyun.com/ 搜索短信服务 自己一步步申请就可以了 开发文档: https://next.api.aliyun.com/api-tools/sdk/Dysmsapi?version2017-05-25&languagejava-tea&tabprimer-doc 1.引入依赖 <dependency>…...
Python+Pytest-BDD UIAPI自动化测试项目架构设计与落地实践
文章目录前言一、项目介绍二、核心技术栈说明1、核心主体框架:pytest-BDD2、编程语言与底层驱动:Python生态3、UI自动化驱动:桌面端专属适配4、辅助能力全覆盖三、项目目录架构设计逻辑第一层: .agents AI智能辅助能力层第二层&am…...
初创公司如何借助Taotoken快速原型验证避免在模型API选型上过度投入
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创公司如何借助Taotoken快速原型验证避免在模型API选型上过度投入 对于初创团队而言,产品原型开发阶段的核心目标是快…...
掌握中兴光猫高级管理:专业级Telnet权限获取实现指南
掌握中兴光猫高级管理:专业级Telnet权限获取实现指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫设备的高级网络管理权限获取一直是技术爱好者和网络管理员关注…...
终极崩坏星穹铁道自动化指南:3分钟学会解放双手的游戏辅助工具
终极崩坏星穹铁道自动化指南:3分钟学会解放双手的游戏辅助工具 【免费下载链接】StarRailAssistant 崩坏:星穹铁道自动化 | 崩坏:星穹铁道自动锄大地 | 崩坏:星穹铁道锄大地 | 自动锄大地 | 基于模拟按键 项目地址: https://git…...
避坑指南:GEE中做Sen+MK趋势分析时,你可能忽略的3个关键细节与优化技巧
GEE中SenMK趋势分析的深度优化:避开统计陷阱与计算瓶颈 当你在Google Earth Engine(GEE)中运行完Sen斜率计算和Mann-Kendall(MK)检验,看着地图上那些彩色斑块时,是否曾怀疑过这些结果的可靠性&a…...
DBHub实战:基于MCP协议为AI助手构建安全数据库连接网关
1. 项目概述:当AI助手需要“看见”你的数据库如果你正在用Claude、Cursor这类AI编程助手,或者深度依赖GitHub Copilot来写代码,那你肯定遇到过这样的场景:你想让AI帮你写一个复杂的SQL查询,或者分析一下某个数据表的结…...
利用 Taotoken 实现跨模型 API 调用的自动降级与容灾策略
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用 Taotoken 实现跨模型 API 调用的自动降级与容灾策略 对于依赖大模型 API 的生产系统而言,服务的稳定性至关重要。…...
从零到点亮LED:基于STM8S105K4T6C的STVD+COSMIC项目创建全流程实录
从零到点亮LED:基于STM8S105K4T6C的STVDCOSMIC项目创建全流程实录 第一次接触STM8S系列单片机时,我被它小巧的体积和丰富的功能所吸引。作为一个嵌入式开发新手,我决定从最基础的LED点亮实验开始,逐步掌握这个平台的开发流程。本文…...
3ds Max老鸟的Unity上手指南:用FBX Exporter插件打通你的第一个实时交互项目
3ds Max老鸟的Unity上手指南:用FBX Exporter插件打通你的第一个实时交互项目 如果你是一位长期深耕于3ds Max的3D艺术家,习惯了用多边形建模和V-Ray渲染打造静态视觉盛宴,那么第一次接触Unity时可能会感到既兴奋又迷茫。兴奋的是,…...
从Hello Vibe看全栈开发:Next.js与实时应用架构实践
1. 项目概述:从“Hello Vibe”看现代Web应用开发范式的演进最近在GitHub上看到一个名为“hello-vibe”的项目,作者是jspi-fu。这个标题本身就很有意思,它让我想起了编程世界里经典的“Hello World”入门程序。但“Vibe”这个词,在…...
