Tomcat服务器和Web项目的部署
目录
一、概述和作用
二、安装
1.进入官网
2.Download下面选择想要下载的版本
3.点击Which version查看版本所需要的JRE版本
4.返回上一页下载和电脑和操作系统匹配的Tomcat
5. 安装完成后,点击bin目录下的startup.bat(linux系统下就运行startup.sh)
6.进入这个界面
7.打开浏览器输入localhost:8080看看能不能打开Tomcat
三、目录结构
四、Web项目的目录结构
五、Web项目部署到Tomcat的方式
方式3
六、Webapps目录下的五个原装web项目的访问
ROOT
host-manager和manager
配置账号和密码
host-manager打开的页面
manager打开的页面
访问Tomcat部署的项目的url组成
七、IDEA中开发并部署运行WEB项目
1.步骤
2.IDEA关联本地Tomcat
3. IDEA创建web工程
4.IDEA部署-运行web项目
八.IDEA部署并运行项目的原理
一、概述和作用
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
我们写好的后端代码想要在服务器上跑起来,就需要Tomcat(不止这个)这个javaweb服务器软件支持。

Web服务器通常由硬件和软件共同构成。
硬件:电脑,提供服务供其它客户电脑访问
软件:电脑上安装的服务器软件,安装后能提供服务给网络中的其他计算机,将本地文件映射成一个虚拟的url地址供网络中的其他人访问。
Tomcat就是一种服务器软件
二、安装
1.进入官网
Apache Tomcat® - Welcome!

2.Download下面选择想要下载的版本
以Tomcat10为例

3.点击Which version查看版本所需要的JRE版本

4.返回上一页下载和电脑和操作系统匹配的Tomcat
5. 安装完成后,点击bin目录下的startup.bat(linux系统下就运行startup.sh)

6.进入这个界面
出现乱码就在conf目录下的logging.properties文件修改编码为GBK

7.打开浏览器输入localhost:8080看看能不能打开Tomcat
看到页面有小老虎表示成功
如果不成功,可能是默认端口8080被占用了,可以先把端口停一下
或者切换默认端口在conf目录下的server.xml文件修改port
三、目录结构

打开webapps目录就可以看到要部署的项目
启动Tomcat可以根据项目的部署目录路径添加到http://localhost:8080后面来访问项目。
(注意:项目的访问路径!=项目的部署目录路径,访问路径是可以通过配置文件调的,但是太复杂了,直接在idea里面调就行)
四、Web项目的目录结构
放在webapps目录下的每一个web项目的目录结构是有要求的,如下
下面的资源除了WEB-INF目录里面的内容不能通过浏览器直接访问,其他都行
![]()
![]()
五、Web项目部署到Tomcat的方式
方式1 直接将编译好的项目放在webapps目录下 (已经演示)
方式2 将编译好的项目打成war包放在webapps目录下,tomcat启动后会自动解压war包(其实和第一种一样)
方式3 可以将项目放在非webapps的其他目录下,在tomcat中通过配置文件指向app的实际磁盘路径
方式3
在磁盘的自定义目录上准备一个要部署的项目
在tomcat的conf下创建Catalina/localhost目录,并在该目录下准备一个app.xml文件
xml文件内容如下
<!--
path: 项目的访问路径,也是项目的上下文路径,就是在浏览器中,可以不用和项目的名称一样
docBase: 项目在磁盘中的实际路径
-->
<Context path="/app" docBase="D:\mywebapps\app" />
启动Tomcat,验证一下
![]()
六、Webapps目录下的五个原装web项目的访问
以下的访问项目的url都是没有配置文件改过的,都是文件部署路径
访问项目的url如果没有指定的资源,只到项目的名称时,都是默认访问项目下的index文件。
比如http://localhost:8/docs这个url进去是直接访问docs目录下的index.html页面文件
examples,host-manager,manager也都一样。
ROOT不一样,它甚至项目名字都不用输入
直接http://localhost:8就可以访问ROOT目录下的index文件了
ROOT
访问这个项目的资源的url可以不用项目的名称。
以下两个个url的网页都是一样的。
host-manager和manager
配置账号和密码
这两个项目是需要Tomcat的账号和密码的,需要我们先在配置文件目录conf下的tomcat-users.xml文件里面配置用户的账号和密码
配置内容如下
<tomcat-users xmlns="http://tomcat.apache.org/xml"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"version="1.0"> <role rolename="admin-gui"/><role rolename="admin-script"/><role rolename="manager-gui"/><role rolename="manager-script"/><role rolename="manager-jmx"/><role rolename="manager-status"/><user username="admin" password="123456" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/> </tomcat-users>启动Tomcat,浏览器输入http://localhost:8/manager 或者 http://localhost:8/host-manager
输入账号admin和密码123456(配置文件自己定义)
打开下面的两个页面之一
host-manager打开的页面
管理Tomcat的一些主机
manager打开的页面
管理Tomcat下的项目
访问Tomcat部署的项目的url组成

七、IDEA中开发并部署运行WEB项目

1.步骤
以下步骤没有使用Maven和Springboot
IDEA关联本地Tomcat
IDEA创建web工程
IDEA部署-运行web项目
2.IDEA关联本地Tomcat
(1)在创建项目前设置本地tomcat,也可以在打开某个项目的状态下找到settings
(2)找到 Build,Execution,Eeployment下的Application Servers ,找到+号
(3)选择Tomcat Server
(4)选择tomcat的安装目录
(5)点击ok
(6)关联完毕
3. IDEA创建web工程
(1)推荐先创建一个空项目,这样可以在一个空项目下同时存在多个modules,不用后续来回切换之前的项目,当然也可以忽略此步直接创建web项目
(2)检查项目的SDK,语法版本,以及项目编译后的输出目录 (下载Tomcat时对应的适配JRE)
![]()
(3)先创建一个普通的JAVA项目
(4)检查各项信息是否填写有误
(5)创建完毕后,为项目添加Tomcat依赖
(6)选择modules,添加 framework support
注意:如果找不到这个选项,就到help->search actions搜索这个选项,先选中模块再进行
(7)选择Web Application 注意Version,勾选 Create web.xml
(8)删除index.jsp ,替换为 index.html
(9)处理配置文件
在工程下创建resources目录,专门用于存放配置文件(都放在src下也行,单独存放可以尽量避免文件集中存放造成的混乱)
标记目录为资源目录,不标记的话则该目录不参与编译
标记完成后,显示效果如下
(10) 处理依赖jar包问题
在WEB-INF下创建lib目录
必须在WEB-INF下,且目录名必须叫lib!!!
复制jar文件进入lib目录
将lib目录添加为当前项目的依赖,后续可以用maven统一解决(先放一个jar包进去才有Add as Library这个选项)
环境级别推荐选择module 级别,降低对其他项目的影响,name可以空着不写
查看当前项目有那些环境依赖
在此位置,可以通过-号解除依赖
![]()
(11)添加静态资源
下面框住的部分,4个目录,css,js,img
4.IDEA部署-运行web项目
(1)检查idea是否识别modules为web项目并存在将项目构建成发布结构的配置
A.就是检查工程目录下,web目录有没有特殊的识别标记
B.以及artifacts下,有没有对应 _war_exploded,如果没有,就点击+号添加
完成AB步骤后,项目模块出现下图的黄色部分
(2)运行配置界面
(3)点击+号,添加本地tomcat服务器
(4)因为IDEA 只关联了一个Tomcat,红色部分就只有一个Tomcat可选
(5)选择Deployment,通过+添加要部署到Tomcat中的artifact
(6)applicationContext中是默认的项目上下文路径,也就是url中需要输入的路径,这里可以自己定义,可以和工程名称不一样,也可以不写,但是要保留/,我们这里暂时就用默认的
(7) 点击apply 应用后,回到Server部分. After Launch是配置启动成功后,是否默认自动打开浏览器并输入URL中的地址,HTTP port是Http连接器目前占用的端口号
(8)点击OK后,启动项目,访问测试
绿色箭头是正常运行模式
"小虫子"是debug运行模式
点击后,查看日志状态是否有异常
浏览器自动打开并自动访问了index.html欢迎页
八.IDEA部署并运行项目的原理
idea并没有直接进将编译好的项目放入tomcat的webapps中
idea根据关联的tomcat,创建了一个tomcat副本,将项目部署到了这个副本中
idea的tomcat副本在C:\用户\当前用户\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\中
idea的tomcat副本并不是一个完整的tomcat,副本里只是准备了和当前项目相关的配置文件而已
idea启动tomcat时,是让本地tomcat程序按照tomcat副本里的配置文件运行
idea的tomcat副本部署项目的模式是通过conf/Catalina/localhost/*.xml配置文件的形式实现项目部署的
相关文章:
Tomcat服务器和Web项目的部署
目录 一、概述和作用 二、安装 1.进入官网 2.Download下面选择想要下载的版本 3.点击Which version查看版本所需要的JRE版本 4.返回上一页下载和电脑和操作系统匹配的Tomcat 5. 安装完成后,点击bin目录下的startup.bat(linux系统下就运行startup.sh&…...
PCIe学习笔记(22)
Transaction Ordering Transaction Ordering Rules 表2-40定义了PCI Express Transactions的排序要求。该表中定义的规则统一适用于PCI Express上所有类型的事务,包括内存、I/O、配置和消息。该表中定义的排序规则适用于单个流量类(TC)。不同TC标签的事务之间没有…...
Vue3 依赖注入Provide / Inject
在实际开发中,我们经常需要从父组件向子组件传递数据,一般情况下,我们使用 props。但有时候会遇到深度嵌套的组件,而深层的子组件只需要父组件的部分内容。在这种情况下,如果仍然将 prop 沿着组件链逐级传递下去&#…...
Python | Leetcode Python题解之第332题重新安排行程
题目: 题解: class Solution:def findItinerary(self, tickets: List[List[str]]) -> List[str]:def dfs(curr: str):while vec[curr]:tmp heapq.heappop(vec[curr])dfs(tmp)stack.append(curr)vec collections.defaultdict(list)for depart, arri…...
React状态管理:react-redux和redux-saga(适合由vue转到react的同学)
注意:本文不会把所有知识点都写一遍,并不适合纯新手阅读 首先Redux是一种状态管理方案,本身和react并没有什么联系,redux也可以结合其他框架来用。 react-redux是基于react的一种状态管理实现,他不像vuex那样直接内置在…...
刷题技巧:双指针法的核心思想总结+例题整合+力扣接雨水双指针c++实现
双指针法的核心思想是通过同时操作两个指针来遍历数据结构,通常是数组或链表,以达到优化算法性能的目的。具体来说,双指针法能够减少时间复杂度、空间复杂度,或者简化逻辑结构。以下是双指针法的几个核心思想: ps 下面…...
什么是前端微服务,有何优势
随着互联网技术的发展,传统的单体应用架构已经无法满足复杂业务场景的需求。微服务架构的兴起为后端应用的开发和部署提供了灵活性和可扩展性。与此同时,前端开发也经历了类似的演变,前端微服务作为一种新兴的架构模式应运而生。 一、前端微服…...
小论文写作——02:编故事
一篇论文,可以发水刊,也可以发顶刊顶会,这两者的区别就是一个故事编的好不好。 你的论文ABC,但不能之说有ABC。创新就是看你故事编的怎么样?创新是编出来的。 我们要说:我发现了问题,然后准备…...
GIT企业开发使用介绍
0.认识git git就是一个版本控制器,记录每次的修改以及版本迭代的一个管理系统 至于为什么会有git的出现,主要是为了解决一份代码改了又改,但最后还是要第一版的情况 git 可以控制电脑上所有格式的文档 1.安装git sudo yum install git -y…...
文件上传-前端验证
查看源代码(找验证代码) 1、源代码直接找到验证代码 示例: function checkFileExt(filename){var flag false; //状态var arr ["jpg","png","gif"]; //允许上传的文件//取出上传文件的扩展名var index f…...
ROT加密算法login-RESERVE
ROT算法(字母轮换加密) 也称为Caesar加密,是一种简单的字母替换加密算法。它通过将字母表中的每个字母向后(或向前)移动固定的位置来加密文本。 加密步骤: 选择一个固定的偏移量(通常是1到25之间的整数)&…...
C++ 新特性 | C++20 常用新特性介绍
目录 1、模块(Modules) 2、协程(Coroutines) 3、概念(Concepts) 4、范围(Ranges) 5、三向比较符(three-way comparison) C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https…...
Java设计模式之策略模式实践
1、策略接口 /*** 策略接口*/ public interface DemoStrategy {Result execute(); } 2、策略工厂 /*** 策略工厂*/ Component public class DemoFactory {Resourceprivate final Map<String, DemoStrategy> demoStrategy new ConcurrentHashMap<>();public Demo…...
C语言——结构体数组、结构体指针、结构体函数与二级指针
C语言中的结构体(struct)是一种用户自定义的数据类型,它允许你将不同类型的数据项组合成一个单一的类型。结构体数组则是一种特殊的数组,其元素为结构体类型。这意味着你可以在一个数组中存储多个具有相同结构的记录。 定义结构体…...
【4】策略模式
如上图所示,如果要加入一个新的货币,那么就需要对类中的Calculate函数进行修改,这违背了封闭开放原则。 上图中的方式更加合适,搞一个抽象类(方法中可以用多态调用),然后每个货币自己是一个类&a…...
BGP 反射器联邦实验
要求: 1.如图连接网络,合理规划IP地址,AS 200内IGP协议为OSPF 2.R1属于AS 100;R2-R3-R4小AS 234 R5-R6-R7小AS 567,同时声明大AS 200,R8属于AS 300 3.R2-R5 R4-R7 之间为联邦EBGP邻居关系 4.R1-R8之…...
stm32入门学习13-时钟RTC
(一)时钟RTC stm32内部集成了一个秒计数器RTC,用于显示我们日常的时间,如日期年月日,时分秒等,RTC的主要原理就是进行每秒自增,如果我们知道开始记秒的开始时间,就可以计算现在的日…...
vuex properties of undefined (reading ‘getters‘)
前言: 最近打算用vue 写个音乐播放器,在搞 vuex 的时候遇到一个很神奇报错;vuex 姿势练了千百次了,刚开始的时候我一直以为是代码问题,反复检查了带了,依旧报错。 Error in mounted hook: "TypeError:…...
再谈表的约束
文章目录 自增长唯一键外键 自增长 auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。 自增长的…...
认识一下测试策略与测试方案
目录 测试方案 测试策略 测试策略的内容主要包括 测试技术和工具 测试启动、停止和完成标准 风险分析和应对方案 测试范围 测试角色和职责 测试方法和类型 测试工具 测试层级 测试指标 测试可交付成果 测试方案的内容包括 测试目标 测试范围 测试环境 测试策略…...
COMSOL 6.1版本皮秒多脉冲激光烧蚀模型:双温变形几何烧蚀模拟系统——电子晶格温度清晰解...
COMSOL 6.1版本 皮秒多脉冲激光烧蚀模型 模型内容:涉及双温模型,变形几何,烧蚀,皮秒脉冲热源,电子、晶格温度 优势:模型注释清晰明了,各个情况都有涉及可参考性极强,可以修改&#x…...
Llama-3.2V-11B-cot效果展示:识别艺术海报中风格与主题逻辑断层
Llama-3.2V-11B-cot效果展示:识别艺术海报中风格与主题逻辑断层 1. 工具介绍 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具。该工具针对双卡4090环境进行了深度优化,特别适合需要分析复杂视觉内容的场景&…...
项目介绍 MATLAB实现基于PSO-Q-learning 粒子群优化算法(PSO)结合Q学习算法(Q-learning)进行无人机三维路径规划(含模型描述及部分示例代码) 还请多多点一下关注 加油
MATLAB实现基于PSO-Q-learning 粒子群优化算法(PSO)结合Q学习算法(Q-learning)进行无人机三维路径规划的详细项目实例 更多详细内容可直接联系博主本人 或者访问对应标题的完整博客或者文档下载页面(含完整的程序&…...
Llama-3.2V-11B-cot实战教程:集成Whisper实现音视频+图像联合推理
Llama-3.2V-11B-cot实战教程:集成Whisper实现音视频图像联合推理 1. 项目概述与核心能力 Llama-3.2V-11B-cot是一个强大的视觉语言模型,它不仅能理解图像内容,还能进行系统性推理。这个模型基于LLaVA-CoT论文实现,特别适合需要结…...
Phi-4-mini-reasoning推理能力展示:多步分析题目的简洁结论生成效果
Phi-4-mini-reasoning推理能力展示:多步分析题目的简洁结论生成效果 1. 模型介绍 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别擅长处理需要多步分析的题目。与通用聊天模型不同,它被设计用来解决数学题、逻辑题等需要严谨…...
水质评价避坑指南:当DO和NH3-N指标冲突时怎么办?
水质评价指标冲突的智能解法:熵权法实战与多维度决策 当溶解氧(DO)与氨氮(NH3-N)这两项关键水质指标出现评价矛盾时,环保工程师常陷入两难——DO浓度越高通常代表水质越好,而NH3-N数值越低则表明…...
BusyBox根文件系统制作避坑指南:如何让QEMU模拟的ARM板成功挂载你的第一个Linux系统
BusyBox根文件系统制作避坑指南:如何让QEMU模拟的ARM板成功挂载你的第一个Linux系统 当你在QEMU上启动一个精心编译的ARM Linux内核时,最令人沮丧的莫过于看到内核在挂载根文件系统时崩溃。作为嵌入式Linux开发的关键环节,根文件系统的构建往…...
Linux中以其它用户身份执行脚本或命令的全总结
Linux中以其他用户身份执行命令或脚本是一个常见的需求,最近工作中碰到了这个需求,在这里简单总结一下.假如我们在root用户下想以其它用户(例如oracle,mysql)身份执行一些脚本或命令,那么有哪一些方法呢?su命令(switch user)su命令的使用方式有两种, 如下所示:切换用户只执行一…...
FLUX.1-dev像素模型部署教程:Docker Compose编排前端+后端+模型服务
FLUX.1-dev像素模型部署教程:Docker Compose编排前端后端模型服务 1. 项目概述 像素幻梦(Pixel Dream Workshop)是基于FLUX.1-dev扩散模型构建的像素艺术生成平台,采用16-bit像素风格设计,为创作者提供沉浸式的AI绘图体验。本教程将指导您使…...
LTR308环境光传感器驱动开发与嵌入式集成指南
1. LTR308环境光传感器库技术解析与工程实践指南Lite-On LTR-308 是一款高精度、低功耗的环境光传感器(Ambient Light Sensor, ALS),专为智能手机、平板电脑、可穿戴设备及工业人机界面等对光照感知精度和能效比要求严苛的应用场景设计。其核…...













































