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>…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
新版NANO下载烧录过程
一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...
JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除
目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作…...
深入理解 C++ 左值右值、std::move 与函数重载中的参数传递
在 C 编程中,左值和右值的概念以及std::move的使用,常常让开发者感到困惑。特别是在函数重载场景下,如何合理利用这些特性来优化代码性能、确保语义正确,更是一个值得深入探讨的话题。 在开始之前,先提出几个问题&…...
