macOS下载、安装、使用tomcat服务器及IntelliJ IDEA for Mac 如何集成、配置、运行tomcat

文章目录

  • web 服务器软件
  • tomcat
    • 如何下载安装 tomcat
    • macOS 下如何启动 tomcat
    • Windows 启动 tomcat
    • 部署项目的方式
      • 直接将项目放到 webapps 目录下即可
      • 在 tomcat 的配置文件 server.xml 中进行配置部署
      • 在 tomcat 的 localhost 目录下通过 xml 文件完成部署
  • IntelliJ IDEA 集成 tomcat
  • IntelliJ IDEA 启动 tomcat
  • IntelliJ IDEA 部署项目
  • IntelliJ IDEA 自动部署项目
  • IntelliJ IDEA 热部署
    • 手动触发 Update 动作时需要 IDEA 做什么
    • IDEA 失去焦点时做什么
    • 热部署总结
  • IntelliJ IDEA 运行 tomcat 的选项说明
  • IntelliJ IDEA 对 tomcat 的配置
  • web 应用程序如何调试

网络通信三要素:

1.IP:电子设备(计算机)在网络中的唯一标识。

2.端口:应用程序在计算机中的唯一标识。范围:0~65536

3.传输协议:规定了数据传输的规则

3.1.基础协议:
3.1.1. tcp:安全协议,三次握手。速度稍慢
3.1.2. udp:不安全协议。速度快

web 服务器软件

服务器:安装了服务器软件的计算机
服务器软件:接收用户的请求,处理请求,做出响应

  • web服务器软件:接收用户的请求,处理请求,做出响应。
  • 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
  • 也叫web容器

常见的 Java 相关的 web 服务器软件:
weblogic : Oracle 公司,大型的JavaEE服务器,支持所有的JavaEE规范, 收费的。
websphere : IBM 公司,大型的JavaEE服务器, 支持所有的JavaEE规范, 收费的。
JBOSS : JBOSS 公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
Tomcat : Apache 基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范(例如:servlet/jsp)。开源的,免费的。

注:JavaEE 是 Java 语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范

tomcat

如何下载安装 tomcat

官网:https://tomcat.apache.org/
参考:https://blog.csdn.net/dongzhensong/article/details/87807378

macOS 下如何启动 tomcat

  1. 权限设置

给 bin 目录的所有者授予执行的权限:

sudo chmod -R u+x /Users/liaowenxiong/Applications/apache-tomcat-8.5.73/bin
# 或者
sudo chmod -R 755 /Users/liaowenxiong/Applications/apache-tomcat-8.5.73/bin

注:755 代表所有者用户对拥有读、写、执行的权限,同组其他人员以及其它用户拥有执行和读的权限,没有写的权限。

2.切换到 tomcat 的 bin 目录下

cd /Users/liaowenxiong/Applications/apache-tomcat-8.5.73/bin

3.启动 tomcat

sh startup.sh
# 或者
./startup.sh

4.停止 tomcat

sh shutdown.sh
./shutdown.sh 

5.浏览器地址栏输入:localhost:8080,验证是否成功启动 tomcat

Windows 启动 tomcat

Windows 系统可以双击 startup.bat 启动服务器(启动窗口不要关闭掉),双击 shutdown.bat 关闭服务器。关闭终端窗口也可以关闭服务器(不推荐),在启动服务器窗口按 Ctrl + C 也可以停止服务器。

双击批处理脚本文件时可能存在的问题:

1.黑窗口一闪而过
解决:配置 JAVA_HOME 环境变量,JDK的安装目录设为变量值

2.默认端口号被占用,导致启动失败

解决:
1.找到占用端口号的进程,杀死该进程
2.修改tomcat的默认端口号
在tomcat的配置目录下找到 server.xml 文件,在文件中找到:

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

将 Connector 元素的 port 属性值改成其它的端口号即可。

一般将 tomcat 的默认端口号改成 80,该端口号是 http 协议默认的端口号,因此输入 URL 时可以省略端口号。

部署项目的方式

直接将项目放到 webapps 目录下即可

http://ip:port/xxx/hello.html
其中 /xxx 是项目的访问路径,称为虚拟目录;hello.html 是项目中的资源路径。

缺点:每次修改项目的代码后,都要把项目重新放到 webapps 目录下,太麻烦

注:通常会把项目打成 war 包,放到 webapps 目录下,会自动解包;删除 war 包对应的项目文件夹也会自动删除。

在 tomcat 的配置文件 server.xml 中进行配置部署

在 tomcat 的 server.xml 文件的 <Context> 标签中进行配置部署

参考《tomcat服务器通过配置来部署程序》

好处:不再需要把项目放到 webapps 目录下,而且修改了项目的代码后,也不需要手动重新部署,这样比较方便

缺点:
2.1.server.xml 是 tomcat 的核心配置文件,所以在这个文件中配置会有安全风险
2.2.如果一个tomcat部署多个项目时,每次配置改动都要重启服务器

注:server.xml 修改后,需要重启 tomcat,相关配置才能生效

在 tomcat 的 localhost 目录下通过 xml 文件完成部署

在 tomcat 的 conf/Catalina/localhost 目录下创建 xml 文档,进行项目的配置部署

例如,创建一个名为 hello.xml 的文件,在里面写如下的内容:

<Context docBase="E:\Workspaces\hyt2pf\context"debug="5" reloadable="true" crossContext="true" workDir="E:\Workspaces\hyt2pf\work"/>

注:项目的访问路径(虚拟目录)是 xml 文件名,即 /hello

好处:热部署,部署项目或者删除项目,都不需要重启服务器

IntelliJ IDEA 集成 tomcat

第一步:点击顶部菜单栏 Run → Edit Configurations
在这里插入图片描述
第二步:选择左侧 Templates → Tomcat Server → Local,接着点击页面中的 Server 标签页,再点击 Application server 下拉列表框右边的 Configure 按钮,配置服务器。

在这里插入图片描述

第三步:配置服务器

在这里插入图片描述

第四步:创建配置文件

前面几步只是使用 IDEA 的 Template of Tomcat Server 进行服务器集成的相关配置,最后你要把配置信息创建成一份配置文件才能使用。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

IntelliJ IDEA 启动 tomcat

在这里插入图片描述

IntelliJ IDEA 部署项目

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里特别强调下,只有点击 deploy 后,IDEA 才会根据你选择的部署方式生成对应的文件,所以下图所示的文件以及部署动作都是在点击 deploy 后由 IDEA 自动完成的。

在这里插入图片描述

在这里插入图片描述

本地电脑中的 IDEA 工作空间中的项目目录结构截图:

在这里插入图片描述

IntelliJ IDEA 自动部署项目

你添加了要部署的 Artifacts(工件/产品/成品)后,服务器启动时会自动完成已选 Artifacts 的部署工作。

也就是下图所示的步骤你完成了,那么重启服务器会自动完成项目的部署。
在这里插入图片描述
在 Deployment 标签页中添加了 Artifacts,其实并不是部署项目,这里只是选择项目的部署方式而已,服务器启动后或者你在底部的服务器窗格中选择服务器,点击右键的【deploy】才会真正的部署项目。

在这里插入图片描述

如何理解部署这个动作,请参阅《部署应用程序到服务器到底是什么意思?部署到底在干什么事情?》。

IntelliJ IDEA 热部署

热部署就是正在运行状态的应用,修改源码之后,在不重新启动服务器(包含 JVM)的情况下能够自动把增量内容部署到服务器上,使得修改立即生效。

热部署为了解决的问题有两个, 一是在开发的时候,修改代码后不需要重启服务器就能看到效果,大大提升开发效率;二是生产环境上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用。

热部署/热插拔/热替换(HotSwap)是在不重启服务器(包含 JVM) 的前提下,能自动侦测到 class 文件的变化,更新发布包中的 class 文件以及已经加载入内存中处于运行时的 class 的行为,所以热部署不仅要替换 class 文件,还要更新已经加载到 Java 虚拟机内存中的正在运行的 class。

手动触发 Update 动作时需要 IDEA 做什么

以下截图指明了 On 'Update' action 配置的位置:

在这里插入图片描述

On ‘Update’ action:手动触发 Update 动作时需要 IDEA 做什么?

所谓手动触发 Update 动作是指你主动点击下图所示的按钮去更新 tomcat 应用程序。
在这里插入图片描述
但你点击这个更新按钮时会弹出如下所示的小窗口,你会发现你在 On 'Update' action 的下拉列表框中选择的是什么,那么这个小窗口就默认选中的是什么。

其实 On 'Update' action 这个设置是有点多余了,因为仅仅是设置手动触发 update 按钮时默认的行为是什么,你依旧需要手动去点击 update 按钮,再点击【确定】按钮,IDEA 才会去做什么,没有减少用户操作的步骤。

具体行为选项的含义:

选项含义
Update resources更新资源,意思就是你手动触发 Update 动作,IDEA 会更新 js/html/css/xml 等静态的资源文件,不过上文提到了,你依旧需要点击【确定】按钮,IDEA 才会执行
Update classes and resources更新字节码文件和资源文件,意思就是你手动触发 Update 动作,IDEA 会更新资源文件以及字节码文件。特别注意:java文件修改后,debug 模式下立即生效。run 模式下不立即生效,需要 redeployed 才可生效。 jsp文件修改后,在运行模式和调试模式下都是立即生效
Redeploy重新部署。不重启 tomcat,而是把原来项目文件删掉,然后重新发布
Restart server重启tomcat

如果服务器存在以 war 方式部署的项目,则行为选项如下图所示:

在这里插入图片描述
当服务器存在以 war 形式部署的项目时,On Update action 与 On frame deactivation 中的选项没有 Update resources 和 Update classes and resources,取而代之的是 Hot Swap Classes 选项,意思

IDEA 失去焦点时做什么

在这里插入图片描述
所谓 IDEA 失去焦点或者失活,是指你最小化 IDEA 窗口或者切换到其它应用程序了,例如你在编码的时候按 ⌘ + tab 切换到浏览器去查询东西的时候,当前 IDEA 程序就失去焦点了。

On frame deactivation 建议选择 Do nothing,因为暂时离开 IDEA 的情况非常频繁,如果每次离开都要重新 Build Project(即编译项目) 、更新发布包中的文件(不仅要更新发布包中的文件,还要更新已经加载进内存中 class,这些动作对于 tomcat 而言叫作 reload),计算机性能、IDEA 的使用体验会大打折扣。

热部署总结

On Update action 设置为 Update classes and resources,On frame deactivation 设置为 Do nothing。

通常的使用情况是:当更新完 Java 代码或 JSP 或静态资源文件后,手动点击下图所示的更新按钮,当出现下图所示的绿色背景的提示框,则更新完成,即热部署完成。

在这里插入图片描述

如果每次点击的时候不希望出现下图所示的弹框:
在这里插入图片描述

你可以把下图所示的复选框取消打勾:

在这里插入图片描述
新建 Java 文件不可以通过热部署方式完成自动部署更新,需要重新部署或重启服务器;但新建的静态资源文件可以采用热部署方式自动部署更新。

IntelliJ IDEA 运行 tomcat 的选项说明

Run:启动 tomcat,快捷键 ⌃ + R,在 tomcat 已经运行中时按快捷键 ⌃ + R 会弹出对话窗口,让你选择操作项目;而快捷键 ⌃ + ⇧ + R 则是快速重启 tomcat,没有对话弹窗

Rerun:重启 tomcat,也就是 Restart Server

Run comcat with Coverage:
Run tomcat with CPU Profiler:
Run tomcat with Allocation Profiler:
Run tomcat with Java Flight Recorder:

IntelliJ IDEA 对 tomcat 的配置

在这里插入图片描述

上面的配置信息保存在哪里?

其实 IntelliJ IDEA 会把每一份tomcat配置文件的信息保存在下面的目录下:

/Users/liaowenxiong/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/

我的tomcat的配置文件保存在下面的目录:

/Users/liaowenxiong/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084

如果有多份配置文件,则会在 /Users/liaowenxiong/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/ 目录下随机生成多个目录,把配置信息保存到这些目录下。

[~/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084/conf]$ ls
Catalina              catalina.properties   context.xml           jaspic-providers.xsd  server.xml            tomcat-users.xml      web.xml
catalina.policy       catalina.properties.0 jaspic-providers.xml  logging.properties    server.xml.0          tomcat-users.xsd      web.xml.0

我一直好奇下图所示的虚拟目录保存在哪里?

在这里插入图片描述
原来是在 …conf/Catalina/localhost 目录下创建同名的 xml 文件,以这样的方式部署项目。

[~/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084/conf/Catalina/localhost]$ ls
web_demo_03.xml

查看下 web_demo_03.xml:

[~/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084/conf/Catalina/localhost]$ cat web_demo_03.xml 
<Context path="/web_demo_03" docBase="/Users/liaowenxiong/Documents/IdeaProjects/java-exercises/web-demo-03/target/web-demo-03-1.0-SNAPSHOT" />% 

怎么找到这个目录的?
在 tomcat 控制台看 Catalina.log 日志内容,如下图所示:

在这里插入图片描述
如果是 windows 操作系统,如下图所示:

在这里插入图片描述

web 应用程序如何调试

1.在类的源码文件中添加断点
在这里插入图片描述

2.以 debug 模式启动 tomcat
在这里插入图片描述

3.浏览器地址栏输入请求资源路径,访问 web 服务

4.查看调试详情在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

run spark pi_Spark Run本地设计模式

run spark pi现在&#xff0c;许多Spark应用程序已成为遗留应用程序&#xff0c;很难在本地进行增强&#xff0c;测试和运行。 Spark具有很好的测试支持&#xff0c;但仍有许多Spark应用程序不可测试。 当您尝试运行一些旧的Spark应用程序时&#xff0c;我将分享一个常见错误…

php 表单 同步,Jquery点击按钮 异步和同步提交表单

最近在开发一个jsp学生信息管理系统&#xff0c;由于刚刚接触jsp&#xff0c;遇到问题比较多&#xff0c;特此记录与大家分享。Jquery ajax提交表单到servlet示例前台部分代码&#xff1a;姓名学号 ajax提交表单代码&#xff1a;//增加学生&#xff0c;异步提交学生表单$(&q…

IntelliJ IDEA for Mac如何配置数据源(Data Source)和用户驱动(User Driver)及数据库控制台_数据源配置(Console)详解

文章目录直接添加数据源&#xff08;Data Source&#xff09;添加驱动和数据源&#xff08;Driver and Data Source&#xff09;驱动数据库控制台直接添加数据源&#xff08;Data Source&#xff09; 直接添加数据源&#xff0c;IDE 会默认指定数据库驱动&#xff0c;如下图所示…

app aws_服务网格:Istio和AWS App Mesh

app aws本周在AWS re&#xff1a;Invent上的重大公告之一是AWS App Mesh 。 在谈论它之前&#xff0c;让我们先看一下网格到底是什么…… 什么是服务网格&#xff1f; 服务网格是微服务体系结构的基础结构层。 它处理服务之间的通信问题&#xff0c;使该通信更加可见&#xf…

php screw 密钥,php-screw php代码加密工具用法(整理)

1、进入http://sourceforge.net/projects/php-screw/下载最新版本php_screw-1.5.tar.gz 解压安装&#xff1a; #tar zxf php_screw-1.5.tar.gz #cd php_screw-1.5 #vi php_screw.h 将 #define PM9SCREW “\tPM9SCREW\t” #define PM9SCREW_LEN 10 修改为任意字串,如&#xff1a…

IntelliJ IDEA如何部署项目、部署方式以及部署相关的操作

文章目录工件列表工件类型添加工件部署项目exploded 工件的部署war 工件的部署手动部署项目war 包部署exploded 部署部署有关的操作deploy/redeploy&#xff08;部署/重新部署&#xff09;rerun/run&#xff08;重启服务器/启动服务器&#xff09;Update resources&#xff08;…

php恒等符,php学习笔记(三)操作符与控制结构

php学习笔记(三)操作符与控制结构更新时间&#xff1a;2011年08月06日 20:09:31 作者&#xff1a;好久没更新了&#xff0c;这段时间挺忙的。下面继续php学习 之 操作符与控制结构&#xff1b;一&#xff0e;字符串插入为了给开发人员处理字符串值提供最大的灵活性&#xff0…

spring框架三层架构_Spring框架架构

spring框架三层架构这是Spring Framework Architecture的概述。 了解Spring Framework的各个组成部分如何组织以及如何相互联系。 如果您想了解什么是Spring框架及其功能&#xff0c;请阅读Spring框架简介 。 总览 Spring是一个模块化框架 。 它不是作为一个软件包或多个模块捆…

IntelliJ IDEA for Mac如何管理SDK/JDK,模块如何设置SDK/JDK?

文章目录管理 IDE 中的 SDK设置模块依赖的 SDK管理 IDE 中的 SDK 设置模块依赖的 SDK

php 数组是否属于迭代器,数组的迭代器属性Iterator介绍

[导读]数组默认有迭代器属性数组默认有迭代器属性var arr [111,222,333];var aa arr[Symbol.iterator]();aa.next(); // { value: 111, done: false }aa.next(); // { value: 222, done: false }aa.next(); // { value: 333, done: false }aa.next(); // { value: undefined,…

elk 聚合日志_使用ELK堆栈进行日志聚合

elk 聚合日志1.简介 随着微服务的使用&#xff0c;创建稳定的分布式应用程序和摆脱许多遗留问题变得很容易。 但是微服务的使用也带来了一些挑战&#xff0c; 分布式日志管理就是其中之一。 由于微服务是隔离的&#xff0c;因此它们不共享数据库和日志文件&#xff0c;因此实时…

Java对象如何实现比较规则

文章目录一、Comparable二、Comparator示例代码一、Comparable public interface Comparable 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序&#xff0c;类的 compareTo 方法被称为它的自然比较方法。 实现此接口的对象列表&#xff08;和数组…

python教材目录,python 目录

python在安装的时候&#xff0c;就自带了很多模块&#xff0c;我们把这些模块称之为标准库&#xff0c;其中&#xff0c;有一个是使用频率比较高的&#xff0c;就是 os 。这个库中方法和属性众多&#xff0c;有兴趣的看官可以参考官方文档&#xff1a;https://docs.python.org/…

quartus状态机生成_生成器作为(快速失败)状态机

quartus状态机生成这个想法是几周前在设计“生成器”类时想到的&#xff0c;该类必须将输入发送给封装的Writer 。 实际上&#xff0c;它是Builder模式。 但是&#xff0c;规则有些复杂&#xff0c;用户必须以某种方式调用add...()方法&#xff0c;才能正确生成输出。 不用说&…

除法算式的正确表述

12 4 3&#xff0c;这个关系表达式叫作除法算式&#xff0c;表述为 12 除以 4 等于 3&#xff1b;也可以表述为 4 除 12 等于 3。

elk 日志管理_具有ELK的APIGEE API网关日志管理(弹性搜索,Logstash和Kibana)

elk 日志管理在本文中&#xff0c;我们将看到如何使用 Elastic Search &#xff0c; Logstash 和 Kibana 管理APIGEE API网关生成的日志 。 下图突出显示了日志数据如何流经ELK堆栈以进行数据可视化和监视。 作为API网关的一部分&#xff0c;我们将使用MessageLogging策略在代…

php输出分组,ThinkPHP 项目分组中的模板输出

模板输出启用了项目分组后&#xff0c;模板输出路径同原来相比有一些差别。默认输出当使用 $this->display() 指令输出默认模板时&#xff0c;输出的模板路径加上了分组名&#xff1a;TPL/模板默认主题/分组名/模块名/操作名模板后缀// 例子&#xff1a;Tpl/default/Admin/U…

平方根/立方根/根式

文章目录平方根/二次方根/二次根立方根/三次方根/三次根平方根/二次方根/二次根 如果一个正数 x 的平方等于 a&#xff0c;即 x2x^2x2 a&#xff0c;那么这个正数 x 就叫 做 a 的算术平方根&#xff08;算术二次方根&#xff09;&#xff0c;记作 a\sqrt{a}a​ &#xff0c;读…

使用junit进行单元测试_使用JUnit5对DynamoDB应用程序进行单元测试

使用junit进行单元测试在上一篇文章中&#xff0c;我描述了新的Java 2 AWS开发工具包&#xff0c;它为调用不同AWS服务的Java客户端提供了非阻塞IO支持。 在本文中&#xff0c;我将介绍一种用于单元测试AWS DynamoDB调用的方法。 有几种方法可以启动DynamoDB的本地版本– 1. …

h5jumppage.php,h5使用webviewjsbridge跟原生交互,点击标签调用2次webview

问题描述使用vue循环一个标签列表&#xff0c;点击列表里面的标签&#xff0c;调用app给的跳转页面的方法&#xff0c;第一次跳转页面后&#xff0c;点击返回按钮回到本页面&#xff0c;再次点击列表里面的标签&#xff0c;调用了2次webview&#xff0c;只有第一次点击的时候正…