当前位置: 首页 > article >正文

tomcat的安装与配置(包含在idea中配置tomcat)

        Tomcat 是由 Apache 软件基金会开发的开源 Java Web 应用服务器,主要用于运行 Servlet 和 JSP(JavaServer Pages)程序。它属于轻量级应用服务器,适用于中小型系统及开发调试场景,尤其在处理动态内容(如 Java 程序)时表现优异,但其静态资源处理能力弱于 Apache HTTP Server 或 Nginx 

温馨提示:安装tomcat过程中遇到的所有问题都在文章最后一一解答,如果还有其他问题欢迎留言讨论!!!

一、安装tomcat并配置环境变量

1、首先查看jdk的版本

​不同JDK 版本 下载对应的 Tomcat 版本对照表

下载官网:Apache Tomcat® - Welcome!

JDK 版本兼容的 Tomcat 版本支持范围说明
JDK 1.0-1.3Tomcat 3.x, 4.0.x早期兼容已淘汰,仅供历史参考。
JDK 1.4Tomcat 4.1.x, 5.xJDK 1.4+Tomcat 5.5 需 JDK 1.4 或更高。
​**J2SE 5.0 (5)**​Tomcat 5.5.x, 6.xJDK 5.0+Tomcat 6.x 最低需 JDK 5.0。
Java SE 6Tomcat 6.x, 7.xJDK 6+Tomcat 7.x 需 JDK 6+(推荐 JDK 7+)。
Java SE 7Tomcat 7.x, 8.xJDK 7+Tomcat 8.x 最低需 JDK 7,但推荐 JDK 8+。
Java SE 8Tomcat 8.5.x, 9.x, 10.xJDK 8+Tomcat 9.x/10.x 需 JDK 8+,是主流生产组合。
Java SE 9-10Tomcat 9.x, 10.xJDK 8+JDK 9-10 可能存在兼容性问题,需测试。
Java SE 11Tomcat 10.1.x, 9.x (限)JDK 11+Tomcat 10.1.x 需 JDK 11+(支持模块化)。
Java SE 17Tomcat 10.1.x, 11.x (测试)JDK 11+Tomcat 11.x 在开发中,需 JDK 17+。
Java SE 21Tomcat 11.x (未来支持)JDK 17+Tomcat 11.x 预计支持 JDK 21(需验证)。

 2、下载Tomcat(以下载Tomcat9为例)

 下载完成后存放到自己指定的位置即可,这里不在叙述

3、配置jdk的环境变量

1.找到jdk下载位置(复制该路径)

2.设置环境变量(如果已经设置好了,可以跳过这步骤)

 

4、找到tomcat的启动文件startup并双击打开

5、启动后,如果没有出现闪退现象那么就成功了,如果出现闪退现象,在下面有解决方案

如果出现乱码其实没什么影响,原因是编码方式不同导致中文在编译时出错

6、在浏览器上验证是否能登入8080端口(注意:不要关闭tomcat服务器!!!即上面的框框

输入下面的主机和端口:

http://localhost:8080

出现下面的情况说明能正常访问!!! 


二、在idea中配置tomcat

注意:下面步骤适用于 idea 2023及以上版本(idea2020及以下版本,部分步骤有所不同在文章最后补充!!!)

1、打开idea并新建一个项目

 或在其他项目中新建其他项目

2、项目名称自己随意取 ,点击创建即可

 3、点击  文件(file)  并点击  项目结构

4、添加一个Web运用(模块)

 5、创建工件并运用

创建工件后直接点运用并确定即可 

6、创建Web运用成功后(如下图所示)

7、在idea配置tomcat服务器

注意顺序:先部署后配置服务器!!! 

先添加工件 

 工程路径名字可以删除一部分

点击运用但不要点确定!!! (还要配服务器那边)

 配置tomcat文件

更改名称:根据自己意愿想改就改 

 配置浏览器

最后点击运用并确定 

最后就可以看见Tomcat的标志出来了 

8、配置完成后也仅仅只是个框架,并不能运行程序,还需要编写程序并添加对应的API(接口)

下面以编写jsp程序为例:

在WEB-INF下面创建一个lib目录用于存放jar文件(接口)

9、找到jsp-api.jar文件并复制(这个文件在Tomcat的lib目录下)

10、粘贴到lib目录下 

 11、解析api添加为库

这样就可以在idea中调用这些类和接口了 

12、新建一个jsp文件,取名为test(名字随意) 

13、编写一个简单的程序 

14、点击绿色按钮启动Tomcat服务 

 

温馨提示:需要启动Tomcat服务来访问该文件!!! (点击最上面绿色按钮启动)而不是下面的错误示范!!!

Tomcat服务启动后会自动打开浏览器访问默认地址 

 正常运行展示如下:

 15、访问jsp文件(自己要记得刚刚建好的jsp文件,注意:需要带后缀!!!因为静态文件还有很多种像html、css、js、jsp、img等等)

结果如下: 

最后补充:一定要正确配置不同文件的位置,src目录下是专门存放java文件的!!!静态资源直接存放在web运用下,jar包需要放在WEB-INF下的lib目录


常见问题解答:

1、如何查看自己下载的jdk版本?

(1)打开命令提示符,输入以下命令

java -version

2、如何查找jdk安装的位置?

(1)打开命令提示符,输入以下命令

where java

如果出现以下情况,那么可能没有配置环境变量

查看 Path 中是否存在

%SystemRoot%\system32
%SystemRoot%

若无,需手动添加

 

 

如果输入where java 但是没有找到位置,那么可能是没有配置jdk的环境变量

3、若未安装JDK或配置错误:

(1)下载JDK:从Java Downloads | Oracle选择版本(如JDK 18)并安装。(一直往下面滑,直到看见java8,点击进去)

下载jdk压缩包,可能需要创建oracle账号,自己创建一个即可 

(2)配置jdk环境变量(以Win10为例):

1.新建系统变量 JAVA_HOME,值为JDK安装路径(如 C:\Program Files\Java\jdk-18)。

 注意:一定要知道自己安装jdk的位置(如 C:\Program Files\Java\jdk-18),这个路径复制即可,不需要进入bin目录!!!

2.去环境变量设置那里 (上面有步骤)

3.变量名:JAVA_HOME        变量值:jdk安装的路径

 4.编辑 Path,添加 %JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin

%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

5.注意:退出的时候,一定要点确定!!!

4、配置文件成功后还是启动不了startup文件:

(1)再次确认环境变量是否输错或者是目录打错名字,建议直接复制粘贴!!!

(2)如果之前电脑配置过Tomcat,那么有可能某个程序已经占用了8080端口!!!

查看哪个进程占用了8080端口

netstat -ano | findstr 8080

终止该进程(例如进程id为7920 )

taskkill /pid 7920 /f

5、idea2020版本在配置web运用时有点不同:

其他步骤都一样

如果还有什么问题,欢迎来评论区讨论!!!

相关文章:

tomcat的安装与配置(包含在idea中配置tomcat)

Tomcat 是由 Apache 软件基金会开发的开源 Java Web 应用服务器,主要用于运行 Servlet 和 JSP(JavaServer Pages)程序。它属于轻量级应用服务器,适用于中小型系统及开发调试场景,尤其在处理动态内容(如 Jav…...

问题解决:AttributeError: ‘NoneType‘ object has no attribute ‘text‘

项目环境: 我的环境:Window10,Python3.12,Anaconda3,Pycharm2024.3.4 问题描述: 找不到’text’这个对象 部分代码: Traceback (most recent call last):File "D:\IT DateFiles\PyDate\FQ…...

量子计算测试挑战:软件测试将如何迎接新纪元?

引言 在计算机技术的飞速发展中,量子计算(Quantum Computing)正成为下一个颠覆性的科技热点。随着谷歌、IBM、微软等科技巨头纷纷投入巨资研究量子计算,其应用场景正逐步扩展,从优化计算到密码安全,再到人工智能和材料科学。然而…...

读书报告」网络安全防御实战--蓝军武器库

一眨眼,20天过去了,刷完了这本书「网络安全防御实战--蓝军武器库」,回味无穷,整理概览如下,可共同交流读书心得。在阅读本书的过程中,我深刻感受到网络安全防御是一个综合性、复杂性极高的领域。蓝军需要掌…...

《机器学习数学基础》补充资料:过渡矩阵和坐标变换推导

尽管《机器学习数学基础》这本书,耗费了比较长的时间和精力,怎奈学识有限,错误难免。因此,除了在专门的网页( 勘误和修订 )中发布勘误和修订内容之外,对于重大错误,我还会以专题的形…...

深度学习与普通神经网络有何区别?

深度学习与普通神经网络的主要区别体现在以下几个方面: 一、结构复杂度 普通神经网络:通常指浅层结构,层数较少,一般为2-3层,包括输入层、一个或多个隐藏层、输出层。深度学习:强调通过5层以上的深度架构…...

Flutter底层实现

1. Dart 语言 Dart 是 Flutter 的主要编程语言。Dart 设计之初就是为了与 JavaScript 兼容,并且可以编译为机器代码运行。Dart 提供了一些特性,如异步支持(通过 async 和 await),这使得编写高效的网络请求和复杂动画变…...

【芯片验证】verificationguide上的36道UVM面试题

跟上一篇一样,verificationguide上的36到UVM面试题,通义回答ds判卷。 1. What is uvm_transaction, uvm_seq_item, uvm_object, uvm_component? uvm_transaction、uvm_seq_item、uvm_object、uvm_component是什么? uvm_transaction是UVM中所有事务的基础类,用于表示仿真…...

AI日报 - 2025年3月10日

AI日报 - 2025年3月10日 🌟 今日概览(60秒速览) ▎🤖 AGI突破 | Anthropic CEO预测强AI最早2026年到来 🔬 SAGE框架提升问答质量61.25%,Reflexion框架将GPT-4成功率提至91% ▎💼 商业动向 | xA…...

基于深度文档理解的开源 RAG 引擎RAGFlow的介绍和安装

目录 前言1. RAGFlow 简介1.1 什么是 RAGFlow?1.2 RAGFlow 的核心特点 2. RAGFlow 的安装与配置2.1 硬件与软件要求2.2 下载 RAGFlow 源码2.3 源码编译 Docker 镜像2.4 设置完整版(包含 embedding 模型)2.5 运行 RAGFlow 3. RAGFlow 的应用场…...

TinyWebServer项目笔记——02 半同步半反应堆线程池

目录 1.基础知识 (1)服务器编程基本框架 (2)五种I/O模型 (3)事件处理模式 (4)并发编程模式 (5)半同步/半反应堆 (6)线程池 &a…...

【技术干货】三大常见网络攻击类型详解:DDoS/XSS/中间人攻击,原理、危害及防御方案

1. DDoS攻击 1.1 什么是DDoS攻击? DDoS(Distributed Denial of Service,分布式拒绝服务攻击)通过操控大量“僵尸设备”(Botnet)向目标服务器发送海量请求,耗尽服务器资源(带宽、CPU…...

用Deepseek写一个五子棋微信小程序

在当今快节奏的生活中,休闲小游戏成为了许多人放松心情的好选择。五子棋作为一款经典的策略游戏,不仅规则简单,还能锻炼思维。最近,我借助 DeepSeek 的帮助,开发了一款五子棋微信小程序。在这篇文章中,我将…...

MWC 2025 | 紫光展锐与中国联通联合发布5G eSIM 平板

2025 年 3 月 3 日至 6 日,在全球移动通信行业的年度盛会 —— 世界移动通信大会(MWC 2025)上,紫光展锐联合中国联通重磅发布了支持eSIM的5G平板VN300E。 该产品采用紫光展锐T9100高性能5G SoC芯片平台,内置8 TOPS算力…...

跟着 Lua 5.1 官方参考文档学习 Lua (12)

文章目录 5.7 – Input and Output Facilities补充内容io.input ([file])io.read ()io.write ()io.output ([file])io.lines ([filename])io.flush ()io.close ([file])io.open (filename [, mode])io.popen (prog [, mode])io.tmpfile ()io.type (ob)file:read ()file:lines (…...

操作系统控制台-健康守护我们的系统

引言基本准备体验功能健康守护系统诊断 收获提升结语 引言 阿里云操作系统控制平台作为新一代云端服务器中枢平台,通过创新交互模式重构主机管理体验。操作系统控制台提供了一系列管理功能,包括运维监控、智能助手、扩展插件管理以及订阅服务等。用户可以…...

FreeRTOS任务状态查询

一.任务相关API vTaskList(),创建一个表格描述每个任务的详细信息 char biaoge[1000]; //定义一个缓存 vTaskList(biaoge); //将表格存到这缓存中 printf("%s /r/n",biaoge); 1.uxTaskPriorityGet(&#xf…...

blender学习25.3.6

【02-基础篇】Blender小凳子之凳面及凳脚的创作_哔哩哔哩_bilibili 【03-基础篇】Blender小凳子之其他细节调整优化_哔哩哔哩_bilibili 这篇文章写的全,不用自己写了 Blender 学习笔记(一)快捷键记录_blender4.1快捷键-CSDN博客 shifta&a…...

Tensorflow 2.0 GPU的使用与限制使用率及虚拟多GPU

Tensorflow 2.0 GPU的使用与限制使用率及虚拟多GPU 1. 获得当前主机上特定运算设备的列表2. 设置当前程序可见的设备范围3. 显存的使用4. 单GPU模拟多GPU环境 先插入一行简单代码,以下复制即可用来设置GPU使用率: import tensorflow as tf import numpy…...

RabbitMQ 2025/3/5

高性能异步通信组件。 同步调用 以支付为例: 可见容易发生雪崩。 异步调用 以支付为例: 支付服务当甩手掌柜了,不管后面的几个服务的结果。只管库库发,后面那几个服务想取的时候就取,因为消息代理里可以一直装&#x…...

每日一题-----面试

一、什么是孤儿进程?什么是僵尸进程? 1.孤儿进程是指父进程在子进程结束之前就已经退出,导致子进程失去了父进程的管理和控制,成为了 “孤儿”。此时,这些子进程会被系统的 init 进程(在 Linux 系统中&…...

JSP+Servlet实现对数据库增删改查功能

前提概要 需要理解的重要概念 ​MVC模式: Model(person类):数据模型View(JSP):显示界面Controller(Servlet):处理业务逻辑 ​请求流程: 浏览器 …...

C++【类和对象】

类和对象 1.this 指针2.类的默认成员函数3.构造函数4.析构函数5.拷贝构造函数 1.this 指针 接上文 this指针存在内存的栈区域。 2.类的默认成员函数 定义:编译器自动生成的成员函数。一个类,我们不写的情况下会默认生成六个成员函数。 3.构造函数 函…...

GStreamer —— 2.13、Windows下Qt加载GStreamer库后运行 - “教程13:播放控制“(附:完整源码)

运行效果(音频) 简介 上一个教程演示了GStreamer工具。本教程介绍视频播放控制。快进、反向播放和慢动作都是技术 统称为 Trick Modes,它们都有一个共同点 修改 Normal playback rate。本教程介绍如何实现 这些效果并在交易中添加了帧步进。特别是,它 显…...

MongoDB winx64 msi包安装详细教程

首先我们可以从官网上选择对应版本和对应的包类型进行安装: 下载地址:Download MongoDB Community Server | MongoDB 这里可以根据自己的需求, 这里我选择的是8.0.5 msi的版本,采用的传统装软件的方式安装。无需配置命令。 下载…...

要查看 SQLite 数据库中的所有表,可以通过查询 SQLite 的系统表 sqlite_master

要查看 SQLite 数据库中的所有表,可以查询 SQLite 的系统表 sqlite_master。 每个 SQLite 数据库都包含一个名为 sqlite_master 的系统表。该表定义了数据库的模式,存储了数据库中所有表、索引、视图和触发器等对象的信息。 通过查询 sqlite_master&am…...

WinUI 3 支持的三种窗口 及 受限的窗口透明

我的目标 希望能够熟悉 WinUI 3 窗口的基本使用方式,了解可能出现的问题 。 WinUI 3 支持三种窗口模式,分别为:常规窗口模式、画中画模式、全屏模式。 窗口模式:常规 即我们最常见的普通窗口。 支持:显示最大化按钮…...

如何借助 ArcGIS Pro 高效统计基站 10km 范围内的村庄数量?

在当今数字化时代,地理信息系统(GIS)技术在各个领域都发挥着重要作用。 特别是在通信行业,对于基站周边覆盖范围内的地理信息分析,能够帮助我们更好地进行网络规划、资源分配以及市场分析等工作。 今天,就…...

Linux网络之数据链路层协议

目录 数据链路层 MAC地址与IP地址 数据帧 ARP协议 NAT技术 代理服务器 正向代理 反向代理 上期我们学习了网络层中的相关协议,为IP协议。IP协议通过报头中的目的IP地址告知了数据最终要传送的目的主机的IP地址,从而指引了数据在网络中的一步…...

如何使用 PyInstaller 打包 Python 脚本?一看就懂的完整教程!

PyInstaller 打包指令教程 1. 写在前面 通常,在用 Python 编写完一个脚本后,需要将它部署并集成到一个更大的项目中。常见的集成方式有以下几种: 使用 PyInstaller 打包。使用 Docker 打包。将 Python 嵌入到 C 代码中,并封装成…...