Tomcat学习笔记 startup.bat 与shutdown.bat

时间:2021-09-12 19:12:33

操作系统:win7 旗舰版 64位

Tomcat 版本:apache-tomcat-7.0.23-windows-x64.zip (直接加压使用)

Tomcat 解压目录:D:\tomcat-7.0.23(“Tomcat 解压目录”  根据具体情况改变 )

一、 设置Tomcat 运行环境

Tomcat 运行需要设置JAVA_HOME 环境变量

JAVA_HOME 变量的设置方式有两种:

方法1.    在“计算机”  ——  右键点击  “属性”  —— 点击 “高级系统变量” ——  在 “高级”选项卡下  ——  点击“ 环境变量”   ——  在“系统变量”   下点击“新建” 按钮

输入“变量名” :JAVA_HOME

输入变量值:D:\jdk1.7.0_01 (这是我的JDK的安装目录)

然后一直点击确定按钮

方法2.    找到 D:\tomcat-7.0.23\bin  目录 下的  startup.bat  批处理文件,用文本方式打开

在第一行代码后面添加代码  set JAVA_HOME=D:\jdk1.7.0_01

如下:

@echo offset JAVA_HOME=D:\jdk1.7.0_01

二、环境变量测试:

运行cmd 下转到  D:\tomcat-7.0.23\bin   目录下运行  startup.bat

Tomcat学习笔记 startup.bat 与shutdown.bat

Tomcat 会弹出一个新的运行框,显示巴拉巴拉一堆运行状态回显,如果回显文字信息中没有错误和警告,说明 Tomcat  启动加载已经OK

浏览器运行:http://localhost:8080/   弹出漂亮的 Tomcat  主页面 说明Tomcat 运行成功

三、 startup.bat  批处理文件详解

提示:我是在cmd中,转到  D:\tomcat-7.0.23\bin  目录下运行 startup.bat ,所以我的当前工作目录为:D:\tomcat-7.0.23\bin ,以此目录为例进行详解

Tomcat 解压目录:D:\tomcat-7.0.23

[javascript]
  1. @echo off                   //此行命令效果:只显示下列命令执行结果,不显示命令本身  
[javascript]
  1. if "%OS%" == "Windows_NT" setlocal      //如果本机OS是windows_NT 则设置本机环境变量  
[javascript]
  1. rem Guess CATALINA_HOME if not defined      //为注释代码:判断 CATALINA_HOME 环境变量是否已经配置  
  2. set "CURRENT_DIR=%cd%"              //设置CURRENT_DIR 变量(当前工作目录)为:D:\tomcat-7.0.23\bin    
  3. if not "%CATALINA_HOME%" == "" goto gotHome //如果配置了 CATALINA_HOME 环境变量跳转执行 gotHome  
[javascript]
  1. set "CATALINA_HOME=%CURRENT_DIR%"            //如果没有设置,则设置 CATALINA_HOME 变量为:D:\tomcat-7.0.23\bin    
  2. if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome //查看"当前工作目录\bin" 目录(即D:\tomcat-7.0.23\bin\bin)下是否存在catalina.bat 文件,如存在跳转okHome  
  3. cd ..                   //回到上级子目录,即:D:\tomcat-7.0.23 ,此时当前工作目录已经更改为:D:\tomcat-7.0.23  
  4. set "CATALINA_HOME=%cd%"        // 更改 CATALINA_HOME 变量值为:D:\tomcat-7.0.23  
  5. cd "%CURRENT_DIR%"          //切换至当前工作目录:D:\tomcat-7.0.23  

[javascript]

  1. :gotHome  
  2. if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome         //如果找得到 catalina.bat 批处理文件,则跳转okHome  
[javascript]
  1. echo The CATALINA_HOME environment variable is not defined correctly    //找不到catalina.bat文件,显示错误信息,然后结束  
  2. echo This environment variable is needed to run this program        //在cmd执行startup.bat的当前目录不为:“tomcat解压目录”和“tomcat解压目录\bin”时会提示此错误信息  
[javascript]
  1. goto end  
[javascript]
  1. //由此可见 catalina.bat 才是真正的执行 Tomcat 启动和关闭的批处理程序  
[javascript]
  1. //在执行startup.bat时,如果startup.bat 文件不在 ”Tomcat解压目录“或者“Tomcat解压目录\bin” 目录下  
[javascript]
  1. //才会提示CATALINA_HOME 错误信息    
[javascript]
  1. :okHome  
  2. set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"   //至此catalina.bat文件已经确定存在了,现在设置 EXECUTABLE (执行文件)环境变量  
[javascript]
  1. rem Check that target executable exists  
[javascript]
  1. if exist "%EXECUTABLE%" goto okExec          //如果EXECUTABLE 变量已经设置成功,跳转okExec执行  
[javascript]
  1. echo Cannot find "%EXECUTABLE%"                //否则提示找不到catalina.bat 执行文件  
[javascript]
  1. echo This file is needed to run this program  
  2. goto end  
[javascript]
  1. :okExec  
  2. rem Get remaining unshifted command line arguments and save them in the  
  3. set CMD_LINE_ARGS=                   //清除CMD_LINE_ARGS环境变量原来的值  
[javascript]
  1. :setArgs  
  2. if ""%1""=="""" goto doneSetArgs         //如果第二个参数为空跳转doneSetArgs,即已经接完了传入的参数    
[javascript]
  1. set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1         //给 CMD_LINE_ARGS 添加参数,并以空格隔开  
[javascript]
  1. shift                                    //截掉第一个参数,使第二个参数变为第一个参数  
[javascript]
  1. goto setArgs  
[javascript]
  1. //  以上5行代码的作用就是将所有参数用空格间隔开,并赋值CMD_LINE_ARGS  
[javascript]
  1. :doneSetArgs  
  2. call "%EXECUTABLE%" start %CMD_LINE_ARGS%   //打开新窗口,执行 EXECUTABLE 环境变量所代表的catalina.bat 批处理文件与 CMD_LINE_ARGS 代表的参数  
[javascript]
  1. :end                        //结束  

总结:

1.    startup.bat 的作用主要是检查catalina.bat 执行所需环境,并调用catalina.bat 批处理文件

2.   shutdown.bat 文件与 startup.bat 文件的内容只有一点不同,即倒数第二行代码,通过修改执行参数 start  为stop  并交由catalina.bat 执行实现Tomcat 的关闭功能

补充:

1.   rem

代码前面有 rem :所修饰的代码是注释说明文字

2.   @

代码前面有  @  :所修饰的代码执行时,只显示执行结果,不显示命令本身