web项目的初始化
Tomcat 安装配置
Tomcat 官方站点:Apache Tomcat® - Welcome! 。
安装
-
得到下载的安装包(一般是 zip 文件),并解压到你指定的目录(建议不要解压在 c 盘);(这里以 windows10 系统为例,下载的是 8.0.50 版本);
-
找到 bin 目录下的
startup.bat
文件,双击。出现黑色窗口后不要关闭,不要关闭,不要关闭。此时 Tomcat 已经装载完毕;黑色窗口如下:
-
校验。在浏览器输入 url:
localhost:8080
,若显示了以下图片,则算成功;
安装错误排查
- 双击 startup.bat 文件,出现一个小黑窗口然后就没了,原因是因为没有配置 JAVA_HOME 环境变量。Tomcat 本质是一个 Java 程序,所以要 jdk, 会去根据 JAVA_HOME 使用指定 jdk;
- JAVA_HOME 必须全大写;
- JAVA_HOME 中间必须是下划线;
- JAVA_HOME 配置的路径只需要配置到 jdk 的安装目录即可。不需要带上 bin 目录;
- 端口 8080 被占用
[查看端口cmd指令: netstat -anb, 使用的非常多]
。如果其它服务程序占用了 8080 端口,可以关闭该服务,或者修改 Tomcat 服务的默认配置文件中的端口 8080(通过 Tomcat 目录下的server.xml
文件进行修改);
目录结构
补充:
- conf 目录下的
server.xml
文件主要用于配置 Tomcat 的基本设置;
Tomcat 的运行与停止
这里仅仅只介绍不依靠其他 IDE 的情况下的最原始的运行方法:
- 运行。在 bin 目录下启动控制台,执行命令
catalina run
; - 停止。有两种方案:
- 直接点击运行后出现的黑色窗口的叉号;
- 双击 bin 目录下的
shutdown.bat
;
Web 应用概述
web 应用介绍
- WEB 应用是多个 web 资源的集合。简单的说,可以把 web 应用理解为硬盘上的一个目录,这个目录用于管理多个web资源。
- Web 应用通常也称之为 web 应用程序,或 web 工程,通俗的说就是网站。
- 在 Tomcat 中,若没有额外的 web 应用,并且请求的地址没有工程名的话,会默认调用 webapps 下的 ROOT 应用,也就是我们在安装成功后显示的页面;
web 应用组成
一个 WEB 应用由多个 WEB 资源或其它文件组成,包括 html 文件、css 文件、js 文件、动态 web 页面、java 程序、支持 jar 包、配置文件等。
开发人员在开发 web 应用时,按照规定目录结构存放这些文件。否则,在把 web 应用交给 web 服务器管理时,不仅可能会使 web 应用无法访问,还会导致 web 服务器启动报错。
web 应用/程序/工程目录结构
基本结构
解读:
- 图中的 webapps 下的目录指的是工程目录,一般以工程名字来命名。例如家居项目可以命名为 jiaju;
Web 应用的部署
原生的部署
- 将满足 web 应用目录结构的 war 包或者文件夹放入 webapps 文件夹中。对于 war 包 Tomcat 在运行的时候会自动解压成文件夹形式的项目文件;
- 启动 Tomcat;
- 在浏览器输入
http://ip[域名]:port/项目名/子目录../文件名
即可访问相关资源;
通过配置文件部署
通过配置 server.xml
文件来部署:
在 <Host>...</Host>
标签中配置如下信息:
<context path="/jiaju" docBase="D:\target" />
;-
- 这个配置的意义在于当以/jiaju 的形式请求资源的时候,Tomcat 会默认先访问
"D:\target"
下的 web 应用。也就是说我们的 web 应用可以不用放在 webapps 目录下,为我们自由存放 web 资源提供了支持;
- 这个配置的意义在于当以/jiaju 的形式请求资源的时候,Tomcat 会默认先访问
通过自建 xml 文件部署:
-
进入 Tomcat 安装目录下的
\conf\Catalina\localhost
,创建一个与项目名称一样的文件——项目名.xml
。例如,假如我有一个 web 项目名为“jiaju”:
-
在
jiaju.xml
文件中做如下配置:
<context path="/jiaju" docBase="D:\target" />
。
总结
- 第一种方法比较普通,但是我们需要将编译好的项目重新 copy 到 webapps 目录下,多出了两步操作;
- 第二种方法直接在 server.xml 文件中配置,但是从 tomcat5.0 版本开始后,server.xml 文件作为 tomcat 启动的主要配置文件,一旦 tomcat 启动后,便不会再读取这个文件,因此无法再 tomcat 服务启动后发布 web 项目;
- 第三种方法是最好的,每个项目分开配置,tomcat 将以
\conf\Catalina\localhost
目录下的 xml 文件的文件名作为 web 应用的上下文路径,而不再理会<Context>
中配置的 path 路径,因此在配置的时候,可以不写 path。通常我们使用第三种方法;
IDEA 部署 JavaWeb 应用
这里以 IDEA2020.2 为示例。
新建 JavaWeb 工程
-
先创建一个 java 项目:
-
在新建好的项目上点击右键,点 Add Framework Support:
-
点击导入 Web Application,点击 ok 即可:
配置 TomCat 并启动项目
-
点击右上角的编辑配置;
-
点击+号,找到 Tomcat Server:
-
选择一个本地下载好的 Tomcat:
- Name : 在命名时,建议写与项目名字相关的名字,比如 news_tomcat8 或者 crm_tomcat8;
- 这样,当有多个 web 项目时,就可以明确应当启动哪个 web 项目,不乱;
- 在右边的部署栏 Deployment 中点击+号,添加构建:
- +: 将要部署的 web 工程,加入到 Tomcat 运行实例中;
-
- : 从 Tomcat 实例中,删除不需要的 web 模块
- : 从 Tomcat 实例中,删除不需要的 web 模块
- 修改工程路径,建议改成当前 Web 工程名 (项目名),比如 /news ,/crm 等, 更好区分:
- 可以选择只保留“/”;
- 选择热加载,点击 ok 完成运行环境部署:
- HTTP port 可以指定运行 Tomcat 端口, 不会修改 server.xml, 只是针对当前配置;
- 在 Open browser After launch 可以下拉,选择默认运行的浏览器;
-
运行 Tomcat,访问项目:这里注意要直接选择 Tomcat, 点击运行按钮,而不是在 jsp 页面上右键点击运行,这样会访问不到页面(JSP 不是静态资源):
-
可以看到 tomcat 启动成功后,会自动跳转到浏览器打开页面:
相关文章:

web项目的初始化
Tomcat 安装配置 Tomcat 官方站点:Apache Tomcat - Welcome! 。 安装 得到下载的安装包(一般是 zip 文件),并解压到你指定的目录(建议不要解压在 c 盘);(这里以 windows10 系统为例…...

29- 迁移学习 (TensorFlow系列) (深度学习)
知识要点 迁移学习: 使用别人预训练模型参数时,要注意别人的预处理方式。 常见的迁移学习方式: 载入权重后训练所有参数.载入权重后只训练最后几层参数.载入权重后在原网络基础上再添加一层全连接层,仅训练最后一个全连接层.训练数据是 10_m…...
工具篇(五)炫酷排版,尽在LaTeX:让你的文档飞升吧!
作者的话 作为一个文本排版工具,latex一直以来都备受科研工作者、学生和出版社的青睐。但是对于初学者来说,latex的学习曲线可能会有些陡峭。因此,我写这篇博客旨在为初学者提供一个简单易懂的latex教程,让大家能够快速入门并掌握…...

【蓝桥杯PythonB组备赛】【Acwing周赛】第93场 4867. 整除数 4868. 数字替换 python解
目录 A AcWing 4867. 整除数 1.题目描述 2.思路分析 3.代码实现 B AcWing 4868. 数字替换 1.题目描述 2.思路分析 3.代码实现 A AcWing 4867. 整除数 1.题目描述 2.思路分析 为什么不能直接暴力? 数据:1 ≤ n, k ≤ 10 ** 9 1s内最多…...

KNN学习报告
原理 KNN算法就是在其表征空间中,求K个最邻近的点。根据已知的这几个点对其进行分类。如果其特征参数只有一个,那么就是一维空间。如果其特征参数只有两个,那么就是二维空间。如果其特征参数只有三个,那么就是三维空间。如果其特征…...

Java奠基】方法的讲解与使用
目录 方法概述 方法的定义与调用 方法的重载 方法的值传递 方法概述 方法是程序中最小的执行单元,在实际开发中会将重复的具有独立功能的代码抽取到方法中,这样可以提高代码的复用性和可维护性。 方法的定义与调用 在Java中定义方法的格式都是相同…...
字符串hash
K - 子串翻转回文串2020ccpc河南省赛字符串哈希:将字符串变成x进制数对公式的理解:举个十进制数的例子:123456h[1]1;h[2]1*10212;h[3]12*103123;h[4]123*1041234;.........h[i]h[i-1]*xa[i];h[i]代表的恰巧是整个数的前缀用p[i]表…...
试题 算法训练 转圈游戏
问题描述 n个小伙伴(编号从0到n-1)围坐一圈玩游戏。按照顺时针方向给n个位置编号,从0到n-1。 最初,第0号小伙伴在第0号位置,第1号小伙伴在第 1 号位置,……,依此类推。 游戏规则如下&am…...
【uni-app教程】九、运行环境判断与跨端兼容
(1)开发环境和生产环境 uni-app 可通过 process.env.NODE_ENV 判断当前环境是开发环境还是生产环境,一般用于连接测试服务器或生产服务器的动态切换。 在HBuilderX 中,点击「运行」编译出来的代码是开发环境,点击「发行…...

扩展WSL2虚拟硬盘的大小
扩展WSL2虚拟硬盘的大小 1、在 Windows PowerShell 中终止所有 WSL 实例 wsl --shutdown2、查看 WSL 实例运行状态,确认关闭,并记住发行版的名称 wsl -l -v如果没有更改移动过发行版安装包位置,那么可以通过以下方法查找到发行版的安装包位…...

Win系统蓝牙设备频繁卡顿/断连 - 解决方案
Win系统蓝牙设备频繁卡顿/断连 - 解决方案前言常见网卡Intel无线网卡(推荐)Realtek无线网卡总结查看本机网卡解决方案更新驱动更换网卡(推荐)前言 无线网卡有2个模块,一个是WiFi,一个是蓝牙,因…...

Git学习入门(2)- 基本命令操作总结
个人博客:我的个人博客,各位大佬来玩1 创建 git仓库1.1 从现有工作目录中初始化新仓库需要到你需要用git管理的项目中输入以下命令:git init便会创建一个空的git项目,并且当前目录下会出现一个名为 .git 的目录, Git 需…...

SPringCloud:Nacos快速入门及相关属性配置
目录 一、Nacos快速入门 1、在父工程中添加spring-cloud-alilbaba的管理依赖 2、如果有使用eureka依赖,将其注释 3、添加nacos的客户端依赖 4、修改yml文件,注释eureka配置 5、启动测试 二、Nacos相关属性配置 1、Nacos服务分级存储 2、根据集群…...

医疗器械之模糊算法(嵌入式部分)
模糊控制 所谓模糊控制,就是对难以用已有规律描述的复杂系统,采用自然语言(如大,中,小)加以描述,借助定性的,不精确的以及模糊的条件语句来表达,模糊控制是一种基于语言的…...

网上销售笔记本系统
技术:Java、JSP等摘要:本文讲述了基于B/S模式的笔记本电脑在线销售系统的设计与实现。所谓的笔记本电脑在线销售系统是通过网站推广互联企业的笔记本电脑和技术服务,并使客户随时可以了解企业和企业的产品,为客户提供在线服务和订…...

MySQL基础查询操作
文章目录🚏 Select语句🚀 一、SQL底层执行原理🚬 (一)、查询的结构🚬 (二)、SQL语句的执行过程🚭 1、WHERE 为什么不包含聚合函数的过滤条件?(面试…...
English Learning - L2 语音作业打卡 小元音 [ʌ] [ɒ] Day9 2023.3.1 周三
English Learning - L2 语音作业打卡 小元音 [ʌ] [ɒ] Day9 2023.3.1 周三💌发音小贴士:💌当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音 [ʌ]&…...

Condition 源码解读
一、Condition 在并发情况下进行线程间的协调,如果是使用的 synchronized 锁,我们可以使用 wait/notify 进行唤醒,如果是使用的 Lock 锁的方式,则可以使用 Condition 进行针对性的阻塞和唤醒,相较于 wait/notify 使用…...

看完这篇入门性能测试
大家好,我是洋子。最近组内在进行服务端高并发接口的性能压测工作,起因是2023年2月2日,针对胡某宇事件进行新闻发布会直播,几十万人同时进入某媒体直播间,造成流量激增 从监控上可以看出,QPS到达某峰值后&…...

推导部分和——带权并查集
题解: 带权并查集 引言: 带权并查集是一种进阶的并查集,通常,结点i的权值等于结点i到根节点的距离,对于带权并查集,有两种操作需要掌握——Merge与Find,涉及到路径压缩与维护权值等技巧。 带…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...