Intellij idea 的tomcat原理讲解
作者: 陈宇超 纪念卓越班的日子
初次用idea的小白可能会很感到很神奇,intellij idea部署web项目在浏览器不需要输入项目名就可以直接访问,很是方便啊。那么 intellij 是如何实现这一功能的呢?在了解其原理之前需要掌握一定的知识哦。
第一步 : 在本机上配置tomcat服务器,小白看看吧
首先:添加系统变量 CATALINA_HOME : C:\apache-tomcat-8.0.41
其次:添加环境变量 path : %CATALINA_HOME%\bin
--------------------------------------------------------------
启动 tomcat 服务器,打开你的cmd,输入以下命令
catalina run 启动,在原窗口启动
catalina start 启动,会打开一个新的dos窗口启动
catalina stop 停止tomcat服务器
第二步 : 看看简短的启动信息,对于理解intellij的tomcat很关键
C:\Users\chenyuchao>catalina start
Using CATALINA_BASE: “C:\apache-tomcat-8.0.42”
Using CATALINA_HOME: “C:\apache-tomcat-8.0.42”
Using CATALINA_TMPDIR: “C:\apache-tomcat-8.0.42\temp”
Using JRE_HOME: “C:\Java\jdk1.8.0_101”
我们需要关注的是CATALINA_BASE与CATALINA_HOME的区别,这里虽然表示的路径是一样的,配置tomcat多实例的时候就会不一样了(后面会说).
【官方解释】
Throughout the docs, you’ll notice there are numerous references to CATALINA_HOME. This represents the root of your Tomcat installation. When we say, “This information can be found in your CATALINA_HOME/README.txt file” we mean to look at the README.txt file at the root of your Tomcat install. Optionally, Tomcat may be configured for multiple instances by defining CATALINA_BASE for each instance. If multiple instances are not configured, CATALINA_BASE is the same as CATALINA_HOME.
意思为 : CATALINA_HOME
是Tomcat的安装目录,CATALINA_BASE
是Tomcat的工作目录
目的在于 : 当你需要在一台机器上面部署多个Tomcat实例,但是你又不想创建多个Tomcat的副本,换句话说就是让这些Tomcat副本拥有自己的工作目录但是共享Tomcat的代码。(举个简单的例子,就好比你装了qq影音播放视频,你可以同时用QQ影音打开多个视频同时观看,这就是多实例,他们共享QQ影音这个主程序)
第三步 : Intellij idea 的基于我们给tomcat创建了新的实例
在Intellij中我们给web工程部署到tomcat服务器的时候,我们会有几个疑惑?
1. 为什么我们在tomcat的安装目录的webapps
文件下找不到我们的工程 ?
2. 为什么我们明明在tomcat安装目录下的conf/server.xml
中配置了虚拟目录,部署项目后仍然找不到路径。(文件上传的时候需要配置虚拟目录接收上传的文件,否则浏览器是无法访问我们上传的文件如图片等) 在intellij中应当如何配置虚拟目录呢?两种方式,后面会说
3. 如何去配置intellij在浏览器中的访问路径?
首先解决第一个问题----------------------------------------------
一般来说,intellij 会默认将web工程的输出到本工程目录下为out目录中, 原理后面说。
对于第二个问题 ----------------------------------------------
intellij idea中自己生成的tomcat实例存储路径如下:
C:\Users\{Username}\.IntelliJIdea2017.1\system\tomcat\Unnamed_{Product}_2\conf"
{Username}是你本机名,{Product}是你的工程名
你每次建的web项目都会分配一个独立的tomcat的实例,这里面conf文件夹下同样有一份tomcat配置文件,intellij在运行的时候用的就是这里的配置文件,这也是为什么你在tomcat安装目录中配置虚拟目录不起作用的原因了,吼吼!intellij 运行tomcat时只会依赖你安装目录中的lib和bin这两个文件夹中文件。
下面的是从intellij中部署项目到tomcat中所截取的一段日志
[2017-08-01 09:42:15,873] Artifact smvc:war exploded: Server is not connected. Deploy is not available.Using CATALINA_BASE:
"C:\Users\chenyuchao\.IntelliJIdea2017.1\system\tomcat\Unnamed_springmvc_2"
注意 ! ! !这里的catalina_base指向的不再是tomcat的安装目录了,而是我们项目所配置的tomcat实所在的目录。
第四步 : 为了更好的理解,自己动手配置一个tomcat实例
首先在桌面上新建一个文件夹tomcat-ins,然后从tomcat的安装目录中复制一些必要的文件到我们的文件夹,因为lib
和bin
这两个文件夹内容是所有tomcat实例共享的,不需要复制。
复制过来的文件稍微修改一下,清空一下webapps
,log
和work
目录内容,并手动创建三个启动tomcat实例的批处理文件
这些批处理文件内容如下
runCatalina.bat的代码如下 ,,,,,在当前控制台启动 %cd%代表当前目录
set “CATALINA_BASE=%cd%”
set “EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat”
call “%EXECUTABLE%” run
----------------------------------------------------------
startCatalina.bat的代码如下,,,,,新开dos窗口启动set “CATALINA_BASE=%cd%”
set “EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat”
call “%EXECUTABLE%” start
----------------------------------------------------------
stopCatalina.bat的代码如下,,,,,关闭tomcat服务器set “CATALINA_BASE=%cd%”
set “EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat”
call “%EXECUTABLE%” stop
pause
Tip :启动前在配置文件中修改一下相关的端口,这样多个tomcat启动就不会冲突
最后,部署一个项目到我们的tomcat服务器上去,当然这里部署方式有很多种,最简单的就是部署到tomcat-ins/webapps目录下,但是貌似在浏览器访问就必须加项目名,吼吼!所以我们还是学习intellij部署项目的方式吧,那样我们自己也可以随便改变访问根路径了!!!
第五步 :学习intellij,部署一个项目到我们的tomcat实例
在tomcat-ins/conf/Catalina/localhost文件夹下(如果没有该目录,手动新建)新建一个xml文件
如果你想部署工程在跟目录下,url访问形同 http://localhost:8080/ 就可以直接访问index.jsp,这个xml文件的名字必须为
ROOT.xml
, 着重强调,这里的root四个字母必须全大写
文件内容如下
说明 : path在这里必须为空字符,如果不是空字符串也没关系,不会有影响,建议按照规范来!指的是浏览器访问的uri,docBase 指的是我们项目所在的文件夹。
既然这里的docBase只要指向的是我们的工程目录就可以随意设置,也就验证了intellij的项目输出目录没有部署到webapps下的原因了----------------------------------------------------------
如果你想部署工程在dir1下,url访问形同 http://localhost:8080/dir1就可以直接访问index.jsp,这个xml文件的名字必须为
dir1.xml
,也就是说xml的文件名与你的访问路径直接挂钩
文件内容如下
注意:这里的path规范化要与你的文件名一致,如果不一致,tomcat8仍会以文件名作为访问路径,忽略此path----------------------------------------------------------
如果你想部署工程在dir1/dir2下,url访问形同 http://localhost:8080/dir1/dir2就可以直接访问index.jsp,这个xml文件的名字必须为
dir1#dir2.xml
,注意以#号分隔多层目录
文件内容如下
接着双击startCatalina.bat就可以启动我们建立的tomcat实例了。
看看Intellij的localhost目录有什么,你就知道原因了,intellij就是这样做的
附加 : Intellij idea上部署虚拟目录,解决文件上传问题
错误的做法:上面我们讲到,每个web工程都配置了自己的tomcat配置文件夹,那么我们去改它里面的conf/server.xml,在其host节点中添加一个
这样的虚拟目录配置。
结果自然也是无效的,因为每次intellij部署项目对应的tomcat实例就重新生成一边,图片中的文件全部删除再重建,所以我们修改配置文件无效。
正确的做法:
方法一、intellij中添加虚拟目录
,纠正一下,图片中的服务器改为浏览器,看看结果
方法二、修改tomcat安装目录中server.xml文件,添加一条虚拟目录配置,再勾选如下配置
勾选上图,intellij就会在每次部署项目到tomcat上前,将对比自己生成的server.xml文件与tomcat安装目录下的server.xml文件不同之处,两个文件合二为一,作为最终的tomcat配置文件
附加 : 多个项目部署在相同路径访问的是哪一个项目?没事不要这么干!!
<1>现在有一种情况就是在webapps中有一个项目A ,文件夹名smvc
<2>在conf\catalina\localhost中有个smvc.xml配置文件,加载的是项目B,
<3>在conf\server.xml有个context配置,path为/smvc,加载的是项目C,
那么我们在浏览器中输入http://localhost:8080/smvc 访问的是哪一个项目呢 ?
答案:访问的是项目C,
三种方式拥有的优先级顺序是 <3>大于<2>,<2>大于<1>
Intellij idea 的tomcat原理讲解相关推荐
- IDEA/Tomcat 原理:如何将 Tomcat 集成到 IDEA?实现由传统部署延伸到热部署 Java EE 项目?
文章目录 前言 一.将 Tomcat 集成到 IDEA 中 1.1.进入 IDEA Tomcat 配置页面 1.2.配置并集成 Tomcat 1.3.配置完成说明 1.4.集成检查 1.4.1.检查主 ...
- Tomcat原理系列之四:Tomat如何启动spring(加载web.xml)
Tomcat原理系列之四:Tomat如何启动spring 熟悉的web.xml ContextLoaderListener Tomcat的初始化StandardContext.startInterna ...
- php 伪静态 page-18.html,PHP 伪静态实现技术原理讲解
PHP 伪静态实现技术原理讲解 发布于 2015-01-18 23:52:58 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pre ...
- nginx反向代理原理讲解
一 .概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果 ...
- Tomcat 原理篇
TOMCAT 原理篇 一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个s ...
- 微信小游戏开发教程-2D游戏原理讲解
微信小游戏开发教程-2D游戏原理讲解 原理 为了更加形象的描述,这里先上一张图: 背景 a. 首先,我们看到背景好像是一张无限长的图片在向下移动.实际则不然,这是一张顶部和底部刚好重叠的图片.这是一种 ...
- 解密汽车全景行车安全系统的前世和今生——第二讲:原理讲解
解密汽车全景行车安全系统的前世和今生--第二讲:原理讲解 来源:深圳市汽车电子行业协会 作者:姜卫忠 发布时间:2013-3-7 浏览(4648)次 解密汽车全景行车安全系统的前世和今生 第二讲:全 ...
- IntelliJ IDEA启动Tomcat后,却无法访问Tomcat主页
IntelliJ IDEA启动Tomcat后,却无法访问Tomcat首页? 如下: 可以访问web项目 却无法访问Tomcat主页!!!! 为什么呢? 我们的项目的工件输出目录在图一红框框出来的地方, ...
- intelliJ Idea 添加 Tomcat部署(详细步骤)
使用 IDEA 编辑器开发项目十分便捷,这里介绍使用 IDEA 编辑器添加 Tomcat 详细的记叙了intelliJ Idea中Tomcat的部署,主要是在Tomcat部署的时候一些细节性的东西. ...
最新文章
- Linux从零开始(二、基础命令)
- Vivado中RTL封装IP流程
- 如果再这么玩下去,中国的科研就没戏了
- 学计算机的如何学英语,怎么在电脑上学习英语
- 第三章 熟悉常用的HDFS操作
- IT项目管理-----给年轻工程师的十大忠告
- flex include和import
- Android Binder实战开发指南之开篇
- pdg转pdf的正确方法!!
- Axure原型图(以微信作为参考)
- 定时器之多层级时间轮
- html电子名片,HTML5 精美的双面电子名片
- 如何安装Win10/Ubuntu双系统
- linux 7 查看网卡配置文件,如何查询centos网卡配置文件
- chan算法 matlab,TDOA定位的Chan算法MATLAB源代码
- 后端框架flask学习小记
- 腾讯云HiFlow场景连接器
- 计算机基础知识-进制的运算
- GetElementById
- c++之 std::tie
热门文章
- csgo下方各种数据都是意思_CSGO中的经典名梗众多,但是你知道它们的来历吗?...
- VisionMaster脚本调试(VS)
- TK教主:和玄武实验室有关的几个故事 | 人物志
- Windows(2003/2008/2012)弹性云系统盘扩容方法
- cocostudio导出数据在代码中加载
- PartMaker 走心机车削 车铣编程视频教程 PartMaker资料
- 两个自变量和一个因变量spss_SPSS学习笔记:因变量二分类资料的logistic回归分析...
- win10控制面板里没java_win10安装java以及java配置遇到的坑
- 自学用——移动端布局(要点)
- Android应用程序开发以及背后的设计思想深度剖析(4)