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

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. 安装完成后&#xff0c;点击bin目录下的startup.bat&#xff08;linux系统下就运行startup.sh&…...

PCIe学习笔记(22)

Transaction Ordering Transaction Ordering Rules 表2-40定义了PCI Express Transactions的排序要求。该表中定义的规则统一适用于PCI Express上所有类型的事务&#xff0c;包括内存、I/O、配置和消息。该表中定义的排序规则适用于单个流量类(TC)。不同TC标签的事务之间没有…...

Vue3 依赖注入Provide / Inject

在实际开发中&#xff0c;我们经常需要从父组件向子组件传递数据&#xff0c;一般情况下&#xff0c;我们使用 props。但有时候会遇到深度嵌套的组件&#xff0c;而深层的子组件只需要父组件的部分内容。在这种情况下&#xff0c;如果仍然将 prop 沿着组件链逐级传递下去&#…...

Python | Leetcode Python题解之第332题重新安排行程

题目&#xff1a; 题解&#xff1a; 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的同学)

注意&#xff1a;本文不会把所有知识点都写一遍&#xff0c;并不适合纯新手阅读 首先Redux是一种状态管理方案&#xff0c;本身和react并没有什么联系&#xff0c;redux也可以结合其他框架来用。 react-redux是基于react的一种状态管理实现&#xff0c;他不像vuex那样直接内置在…...

刷题技巧:双指针法的核心思想总结+例题整合+力扣接雨水双指针c++实现

双指针法的核心思想是通过同时操作两个指针来遍历数据结构&#xff0c;通常是数组或链表&#xff0c;以达到优化算法性能的目的。具体来说&#xff0c;双指针法能够减少时间复杂度、空间复杂度&#xff0c;或者简化逻辑结构。以下是双指针法的几个核心思想&#xff1a; ps 下面…...

什么是前端微服务,有何优势

随着互联网技术的发展&#xff0c;传统的单体应用架构已经无法满足复杂业务场景的需求。微服务架构的兴起为后端应用的开发和部署提供了灵活性和可扩展性。与此同时&#xff0c;前端开发也经历了类似的演变&#xff0c;前端微服务作为一种新兴的架构模式应运而生。 一、前端微服…...

小论文写作——02:编故事

一篇论文&#xff0c;可以发水刊&#xff0c;也可以发顶刊顶会&#xff0c;这两者的区别就是一个故事编的好不好。 你的论文ABC&#xff0c;但不能之说有ABC。创新就是看你故事编的怎么样&#xff1f;创新是编出来的。 我们要说&#xff1a;我发现了问题&#xff0c;然后准备…...

GIT企业开发使用介绍

0.认识git git就是一个版本控制器&#xff0c;记录每次的修改以及版本迭代的一个管理系统 至于为什么会有git的出现&#xff0c;主要是为了解决一份代码改了又改&#xff0c;但最后还是要第一版的情况 git 可以控制电脑上所有格式的文档 1.安装git sudo yum install git -y…...

文件上传-前端验证

查看源代码&#xff08;找验证代码&#xff09; 1、源代码直接找到验证代码 示例&#xff1a; function checkFileExt(filename){var flag false; //状态var arr ["jpg","png","gif"]; //允许上传的文件//取出上传文件的扩展名var index f…...

ROT加密算法login-RESERVE

ROT算法(字母轮换加密) 也称为Caesar加密&#xff0c;是一种简单的字母替换加密算法。它通过将字母表中的每个字母向后&#xff08;或向前&#xff09;移动固定的位置来加密文本。 加密步骤&#xff1a; 选择一个固定的偏移量&#xff08;通常是1到25之间的整数&#xff09;&…...

C++ 新特性 | C++20 常用新特性介绍

目录 1、模块(Modules) 2、协程(Coroutines) 3、概念(Concepts) 4、范围(Ranges) 5、三向比较符&#xff08;three-way comparison&#xff09; C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;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语言中的结构体&#xff08;struct&#xff09;是一种用户自定义的数据类型&#xff0c;它允许你将不同类型的数据项组合成一个单一的类型。结构体数组则是一种特殊的数组&#xff0c;其元素为结构体类型。这意味着你可以在一个数组中存储多个具有相同结构的记录。 定义结构体…...

【4】策略模式

如上图所示&#xff0c;如果要加入一个新的货币&#xff0c;那么就需要对类中的Calculate函数进行修改&#xff0c;这违背了封闭开放原则。 上图中的方式更加合适&#xff0c;搞一个抽象类&#xff08;方法中可以用多态调用&#xff09;&#xff0c;然后每个货币自己是一个类&a…...

BGP 反射器联邦实验

要求&#xff1a; 1.如图连接网络&#xff0c;合理规划IP地址&#xff0c;AS 200内IGP协议为OSPF 2.R1属于AS 100&#xff1b;R2-R3-R4小AS 234 R5-R6-R7小AS 567&#xff0c;同时声明大AS 200&#xff0c;R8属于AS 300 3.R2-R5 R4-R7 之间为联邦EBGP邻居关系 4.R1-R8之…...

stm32入门学习13-时钟RTC

&#xff08;一&#xff09;时钟RTC stm32内部集成了一个秒计数器RTC&#xff0c;用于显示我们日常的时间&#xff0c;如日期年月日&#xff0c;时分秒等&#xff0c;RTC的主要原理就是进行每秒自增&#xff0c;如果我们知道开始记秒的开始时间&#xff0c;就可以计算现在的日…...

vuex properties of undefined (reading ‘getters‘)

前言&#xff1a; 最近打算用vue 写个音乐播放器&#xff0c;在搞 vuex 的时候遇到一个很神奇报错&#xff1b;vuex 姿势练了千百次了&#xff0c;刚开始的时候我一直以为是代码问题&#xff0c;反复检查了带了&#xff0c;依旧报错。 Error in mounted hook: "TypeError:…...

再谈表的约束

文章目录 自增长唯一键外键 自增长 auto_increment&#xff1a;当对应的字段&#xff0c;不给值&#xff0c;会自动的被系统触发&#xff0c;系统会从当前字段中已经有的最大值1操作&#xff0c;得到一个新的不同的值。通常和主键搭配使用&#xff0c;作为逻辑主键。 自增长的…...

认识一下测试策略与测试方案

目录 测试方案 测试策略 测试策略的内容主要包括 测试技术和工具 测试启动、停止和完成标准 风险分析和应对方案 测试范围 测试角色和职责 测试方法和类型 测试工具 测试层级 测试指标 测试可交付成果 测试方案的内容包括 测试目标 测试范围 测试环境 测试策略…...

Gradle 查看包的依赖关系

在 Terminal 中可以通过 gradle 的命令查看项目中使用的依赖库及其版本&#xff0c;并且可以更加直观的看到各个模块中库之间的依赖关系。同时也可以跟踪并解决与库版本冲突有关的问题。 工具查看 在 Android Studio 中选择 View > Tool Windoors > Gradle 或者直接选择…...

虚幻5|给攻击添加特效

一&#xff0c;打开武器蓝图 选择武器网格体&#xff0c;在细节处找到组件开始重叠&#xff0c;点击 写下以下蓝图&#xff0c;这是最终蓝图&#xff0c;后面会分讲要点 二&#xff0c;actor拥有标签&#xff0c;就是被击打的敌人&#xff0c;我们给actor添加标签 到主界面&am…...

Delphi包管理与依赖:掌握GetIt与DelphiPI的艺术

标题&#xff1a;Delphi包管理与依赖&#xff1a;掌握GetIt与DelphiPI的艺术 在Delphi的广袤生态中&#xff0c;包管理和依赖解决方案是构建大型项目不可或缺的工具。本文将深入探讨Delphi中的两种主要包管理工具&#xff1a;GetIt包管理器和DelphiPI&#xff0c;通过实际代码…...

如何使用unittest和pytest进行python脚本的单元测试

1. 关于unittest和pytest unittest是python内置的支持单元测试的模块&#xff0c;他提供了核心类&#xff0c;TestCase&#xff0c;让单元测试 代码的编写不再是从0开始&#xff0c;不再是作坊式&#xff0c;而是标准化&#xff0c;模板化&#xff0c;工厂化。 pytest是第三方…...

Java中的值传递与引用传递

Java中的值传递与引用传递 在Java编程中&#xff0c;理解值传递与引用传递的概念是编写无误代码的关键。这两个概念有时会让人感到困惑&#xff0c;特别是当它们与对象有关时。现在&#xff0c;我们将一步步地解释这两个概念&#xff0c;帮助你彻底理解它们。 1. 值传递与引用…...

Seaborn库

目录 主要功能和特点 使用方法 实例应用 Seaborn库的最新版本有哪些新功能和改进&#xff1f; 如何在Seaborn中实现复杂的数据预处理步骤&#xff0c;例如数据清洗和转换&#xff1f; Seaborn与其他数据可视化库&#xff08;如Matplotlib、Plotly&#xff09;相比有哪些优…...

openresty整合modsecurity

安装依赖包 安装依赖 yum -y install gcc-c flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel libtool libxml2-devel libxslt-devel安装依赖包 ftp://ftp.icm.edu.pl/vol/rzm7/linux-centos-vault/7.8.2003/sclo/x86_64/rh/Packages/d/devtools…...

结构体structure、共用体union

目录 结构体 结构体类型的定义形式 结构体类型的大小 内存计算例子 共用体union 用共用体判断大小端 结构体和共用体对比 qsort&#xff08;&#xff09; 结构体 结构体类型——用来描述复杂数据的一种数据类型 构造类型&#xff08;用户自定义类型&#xff09; struc…...

Spring自动注册-<bean>标签和属性解析

xml文件中最常见也最核心的就是<bean>,<Import>,<beans>,<alias>标签,关于它们的解析主要是BeanDefinitionParserDelegate类中.<bean>标签的解析最为复杂和重要. <bean>标签 processBeanDefinition(ele, delegate)方法中,主要是是对…...

【仿RabbitMQ消息队列】基于C++11中packaged_tack异步线程池

目录 什么是同步和异步&#xff1f; future 使用future和async配合管理异步任务 使用promise和future配合管理异步任务 使⽤std::packaged_task和std::future配合 C11异步线程池 什么是同步和异步&#xff1f; 同步&#xff08;Synchronous&#xff09; 同步编程是指程…...

wordpress 安装根目录/北仑seo排名优化技术

OSI: open system interconnection 开放式系统互联参考模型 OSI 和TCP/IP 的对应关系和协议 概述 OSI模型各层的基本作用&#xff1a; OSI对应tcp/ip和五层协议 OSI TCP/IP对应网络协议 详解OSI七层网络模型 物理层 数据链路层 网络层 传输层 应用层 最后一张图&…...

杭州 高端网站建设/百度网页制作

环境 springboot 1.5.1.RELEAS activemq 5-15.19 问题描述 在直接使用springboot 中jmsMessagingTemplate直接接收消息队列的内容的时候&#xff0c;会发现消息接收很慢&#xff0c;在10个线程左右时&#xff0c;接收一个消息大概是至少需要一百毫秒&#xff0c;在30个线程…...

专业营销型网站建设/百度下载安装最新版

1说明 kubeasz 致力于提供快速部署高可用k8s集群的工具, 同时也努力成为k8s实践、使用的参考书&#xff1b;基于二进制方式部署和利用ansible-playbook实现自动化&#xff1b;既提供一键安装脚本, 也可以根据安装指南分步执行安装各个组件。 kubeasz 从每一个单独部件组装到完…...

网站建设与栏目设置/小程序开发平台官网

1、模糊查询效率很低&#xff1a; 原因&#xff1a;like本身效率就比较低&#xff0c;应该尽量避免查询条件使用like&#xff1b;对于like %...%&#xff08;全模糊&#xff09;这样的条件&#xff0c;是无法使用索引的&#xff0c;全表扫描自然效率很低&#xff1b;另外&#…...

新建网站解析域名/全球外贸采购网

目录 1.安装item2 2.安装brew 3.安装lrzsz 4.安装脚本到mac目录 4.1先下载脚本 4.2保存 iterm2-send-zmodem.sh 和 iterm2-recv-zmodem.sh 到mac的 /usr/local/bin/ 路径下 4.3添加脚本可执行权限: 5.在item2中配置 6.使用 7.可能遇到的问题 新版mac系统里没有/usr/…...

网站建设优化服务器/网络营销服务企业有哪些

本文转自电脑圈圈的家当--- user1/2198/archives/2008/48202.html FFT是离散傅立叶变换的快速算法&#xff0c;可以将一个信号从时域变换到频域。有些信号在时域上是很难看出什么特征的&#xff0c;但是 如果变换到频域之后&#xff0c;就很容易看出特征了。这就是很多信号分析…...