Bootstrap

Tomcat(基础篇)

目录

一、关于服务器

二、常见应用服务器

三、Tomcat扮演的角色

1. 简介

2. Web服务器

3. Servlet容器

四、Tomcat下载与安装

1. 下载安装后解压Tomcat

2. Tomcat目录结构详解

3. 配置Tomcat环境变量

3.1. 配置Tomcat环境变量前先配置JDK环境变量

3.2. 配置 tomcat环境变量

五、启动Tomcat并访问首页

六、Tomcat入门问题

1. 启动和停止

1.1. Windows/Linux 启动

1.2. Windows/Linux 停止

2. 启动问题

2.1. 启动一闪而过

2.2. 端口被占用

2.3. 启动产生很多异常,但能正常启动

2.4. 启动控制台乱码问题

2.5. Tomcat端口问题

2.6. 其它问题

3. Tomcat 三种部署方式

3.1. 隐式部署

3.2. 显式部署:两种

方式一:

方式二:

4. Tomcat配置虚拟主机

5. Tomcat默认首页的配置

6. Web应用默认欢迎列表的配置

7. Tomcat默认访问时的注意点

8. 打包Web工程

七、IDEA集成Tomcat

1. 编辑Tomcat实例

2. 配置Tomcat实例

3. 部署项目

4. 部署好之后的效果

5. 启动服务器

6. IDEA运行时的界面布局

八、基于Maven的Web项目结构

1. Maven Web项目结构: 开发中的项目

2. 开发完成部署的Web项目

动态工程目录结构

3. 基于Maven的Web项目创建

3.1. 使用骨架创建

3.2. 不使用骨架创建

九、Tomcat Maven插件

十、在IDEA中重新部署运行

1. 为什么需要重新部署?

2. 怎么重新部署

2.1. 清理部署目录

2.2. 构建

2.3. 效果

十一、导入现有的Module

十二、IDEA整合Tomcat:热部署详解

1. 应用场景

2. 两个选项

3. 演示模板

3.1. On Update action

3.2. On Frame deactivation

3.3. 细节问题


一、关于服务器

服务器可以说是一台特殊的计算机(相比普通计算机运行更快、负载更高、价格更贵),也可以说是用于部署

网站的应用运行更快、价格更贵,这个通俗易懂,但是服务器负载是指什么?

服务器负载是指当前该服务器所承担的数据处理情况,反映了该服务器当前在线人数!

Tomcat是一款什么类型服务器?

Tomcat就是一款web服务器,也可以说是应用服务器,其实本质就是一个软件,一个应用!

这类 web/应用服务器的作用就是发布我们的应用(工程),让用户能够通过浏览器访问我们的应用!

二、常见应用服务器

服务器名称

说明

weblogic

实现了javaEE规范,重量级服务器,又称为javaEE容器!

websphereAS

实现了javaEE规范,重量级服务器!

JBOSSAS

实现了JavaEE规范,重量级服务器,免费!

Tomcat

实现了jsp/servlet规范,是一个轻量级服务器,开源免费!是开发和调试Servlet、JSP 程序的首选。

三、Tomcat扮演的角色

1. 简介

Tomcat的作用是作为Web服务器部署Web项目,从而让客户端能够访问,

在这个过程中它扮演两个角色: Web服务器和Servlet容器

2. Web服务器

3. Servlet容器

Tomcat充当Web服务器,主要用来部署Web项目,从而让客户端能够访问,

Tomcat充当Servlet容器,它可以将从web页面接收请求后再将这些请求重定向到Servlet对象中,

然后将动态生成的结果返回到正确的位置中

四、Tomcat下载与安装

Tomcat官网下载地址:Apache Tomcat® - Welcome!

1. 下载安装后解压Tomcat

因为Tomcat是Java代码编写,所以必须要配置JAVA_HOME和java环境变量之后才能运行,可以通过下面的命

令检测:

C:\Users\Administrator>java -version

java version "1.8.0_141"

Java(TM) SE Runtime Environment (build 1.8.0_141-b15)

Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

C:\Users\Administrator>echo %JAVA_HOME%

D:\software\Java

C:\Users\Administrator>echo %PATH%

D:\software\xftp;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDO

WS\System32\WindowsPo

werShell\v1.0;D:\software\Java\bin;D:\software\apache-maven-

3.5.4\bin;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;

将Tomcat压缩包解压到一个非中文无空格的目录下,以避免后续出现没必要的错误!

2. Tomcat目录结构详解

bin:专门用来存放Tomcat服务器的可执行程序

conf:专门用来存放Tocmat服务器的配置文件

lib:专门用来存放Tomcat服务器的jar包

logs:专门用来存放Tomcat服务器运行时输出的日记信息

temp:专门用来存放Tomcdat运行时产生的临时数据

webapps:专门用来存放部署的Web工程

work:Tomcat工作时的目录,用来存放Tomcat运行时jsp翻译为Servlet的源码,和Session钝化的目录

3. 配置Tomcat环境变量

3.1. 配置Tomcat环境变量前先配置JDK环境变量

步骤一:首先右击我的电脑(此电脑),点击属性,或者也可以从控制面板上打开,如下图,找到系统点击高级

系统设置;

步骤二:然后进入系统属性界面,点击右下角的环境变量

步骤三:进入环境变量界面后找到最下方的系统变量,点击新建,将JAVA_HOME和JRE_HOME分别配置好相

应的值,它们各自的值取决于它们在你电脑上的位置,找到再复制粘贴即可,默认C盘

常见的JAVA_HOME配置错误有以下几种情况:

一、JAVA_HOME必须全大写

二、JAVA_HOME中间必须是下划线,不是减号

三、JAVA_HOME配置的路径只需要配置到jdk的安装目录即可,不需要带上bin目录

3.2. 配置 tomcat环境变量

步骤一:新建系统变量CATALINA_HOME,值就是Tomcat安装解压后的目录;:

步骤二:然后在环境变量栏上选中Path点击编辑;

步骤三:在编辑环境变量界面中选择新建如图中所示的路径,再点击确定即可完成Tomcat环境变量的配置

五、启动Tomcat并访问首页

运行Tomcat解压后根目录下\bin\startup.bat即可启动Tomcat服务器,然后打开谷歌浏览器,

在地址栏输入“http://localhost:8080”就可以访问Tomcat了

六、Tomcat入门问题

1. 启动和停止

进入到Tomcat服务器的二进制目录(即bin目录)

1.1. Windows/Linux 启动

startup.bat / startup.sh

1.2. Windows/Linux 停止

shutdown.bat / shutdown.sh

注意:其中.bat文件是针对windows系统的运行程序,.sh文件时针对Linux系统的运行程序

2. 启动问题

2.1. 启动一闪而过

可能原因:没有配置环境变量

解决办法:配置上JAVA_HOME环境变量

2.2. 端口被占用

问题所在:Address already in use : JVM_Bind

解决办法:找到占用该端口的应用

  1. 进程不重要:使用cmd命令:netstat -a -o 查看 pid 在任务管理器中结束占用端口的进程!
  2. 进程很重要:修改自己的端口号,修改的是Tomcat目录下\conf\server.xml中的配置。

2.3. 启动产生很多异常,但能正常启动

原因:Tomcat中部署着很多项目,每次启动这些项目都会启动,而这些项目中有启动报异常的。

解决办法:

  1. 能找到报异常的项目,就把它从发布目录中移除!
  2. 能确定报异常的项目,就重新解压一个新的Tomcat!

2.4. 启动控制台乱码问题

找到 D:\development\JavaEE\tomcat\apache-tomcat-9.0.69\conf\logging.properties

文件进行修改编码配置!

2.5. Tomcat端口问题

Tomcat安装目录下的conf目录中,可以看到一个server.xml文件,这个xml文件中就配置了Tomcat的端口号

……
<!-- 第22行 -->
<Server port="8005" shutdown="SHUTDOWN">
……
<Connector port="8080" protocol="HTTP/1.1"
		   connectionTimeout="20000"
		   redirectPort="8443" />
……
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

三个位置共定义了3个端口号,Tom

cat启动后,这个三个端口号都会被占用!

2.6. 其它问题

例如:启动产生异常,但是不能正常启动,此时就需要解压一个新的Tomcat启动,来确定是系统问题,还是

Tomcat的问题。

所以,此时就需要具体问题,具体分析,然后再对症解决!

3. Tomcat 三种部署方式

3.1. 隐式部署

把项目war包拷贝到webapps目录下,Tomcat启动会自动解压webapps目录下war包

3.2. 显式部署:两种

方式一:

在server.xml配置文件的host标签加入Context标签配置

在Host标签下添加如下的配置

<Context path="/hello"docBase="C:/demo/demo1"reloadable="true" >
</Context>
方式二:

在conf/Catalina/localhost中创建xml文档,访问的路径为文件名称

创建demo2.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:/demo/demo1" reloadable="true"></Context>

注意:这里已经告知三种方式的配置思路,具体百度去学就行。

4. Tomcat配置虚拟主机

步骤一:找到tomcat/conf/server.xml文件

步骤二:编辑server.xml配置文件,找到<Engine>标签,对其设置

步骤三:修改hosts文件,将其拷贝出来修改(hosts文件位置:C:\Windows\System32\drivers\etc)

步骤四:重启tomcat

步骤五:验证结果

5. Tomcat默认首页的配置

步骤一:找到tomcat的安装目录,打开其中的conf目录!

步骤二:使用文本编辑器,打开conf目录下的server.xml文件

步骤三:找到其中的<Host>签,在其中添加如下内容:

<Context path="" docBase="testDemo" />

这里的path代表浏览器发出是虚拟目录请求,我们需要的是配置首页,所有填""就行。

这里的docBase是虚拟目录对应的真实目录,这里的testDemo即对应webApps目录下的testDemo文件夹,

这里一定要不要写了/testDemo

步骤四:在testDemo目录下添加index.html文件,在该文件就会变成Tomcat的默认首页!

6. Web应用默认欢迎列表的配置

首先要明确的是,配置默认主页是针对应用说的,是应用的默认主页!

在应用的web.xml中配置:

<welcome-file-list>
  <welcome-file>默认主页</welcome-file>

</welcome-file-list>

例如:

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

7. Tomcat默认访问时的注意点

ROOT的工程的访问,以及默认index.html页面的访问!

  1. 当我们在浏览器地址栏中输入访问地址如下:http://ip:port/:没有工程名的时候,默认访问的是ROOT

工程

  1. 当我们在浏览器地址栏中输入的访问地址如下:http://ip:port/工程名/:没有资源名,默认访问

index.html页面,配置了欢迎列表页面,就按照欢迎列表页面依次进行访问

8. 打包Web工程

编写完Web项目之后,通常是将Web项目打包成war包,然后将war包放入Tomcat的webapps目录中即可

在Tomcat启动过程中,会将war包进行解压,然后运行解压后的项目(这就是前面三种部署方式中的隐式部

署)在浏览器访问我们刚刚部署的项目"http://localhost:8080/项目文件夹名/要访问的文件名"

七、IDEA集成Tomcat

1. 编辑Tomcat实例

2. 配置Tomcat实例

3. 部署项目

4. 部署好之后的效果

5. 启动服务器

6. IDEA运行时的界面布局

八、基于Maven的Web项目结构

Web项目的结构分为:开发中的项目和开发完可以部署的Web项目,这两种项目的结构是不一样的!

1. Maven Web项目结构: 开发中的项目

2. 开发完成部署的Web项目

注意:

  1. 开发中的项目通过执行Maven打包命令package,可以获取到部署的Web项目目录
  2. 编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下
  3. pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下

动态工程目录结构

目录或文件名

功能

src目录

存放Java源文件

web目录

存放Web开发相关资源

web/WEB-INF目录

存放web.xml文件、classes目录、lib目录

web/WEB-INF/web.xml文件

别名:部署描述符deployment descriptor,作用:Web工程的核心配置文件

web/WEB-INF/classes目录

存放编译得到的*.class字节码文件

web/WEB-INF/lib目录

存放第三方jar包

3. 基于Maven的Web项目创建

基于 Maven 创建Web项目,创建方式有两种:使用骨架 和 不使用骨架

3.1. 使用骨架创建

步骤一:创建Maven项目

步骤二:选择使用Web项目骨架

步骤三:输入Maven项目坐标创建项目

步骤四:确认Maven相关的配置信息后,完成项目创建

步骤五:删除pom.xml中多余内容

步骤六:补齐Maven Web项目缺失的目录结构

3.2. 不使用骨架创建

步骤一:创建Maven项目

步骤二:选择不使用Web项目骨架

步骤三:输入Maven项目坐标创建项目

步骤四:在pom.xml设置打包方式为war

步骤五:补齐Maven Web项目缺失webapp的目录结构

步骤六:补齐Maven Web项目缺失WEB-INF/web.xml的目录结构

九、Tomcat Maven插件

在IDEA中使用本地Tomcat进行项目部署,相对来说步骤比较繁琐,我们还可以用一种更简便的方式来替换

它,那就是直接使用Maven中的Tomcat插件来部署项目,

具体的实现步骤,只需要两步,分别是:

步骤一:在pom.xml中添加Tomcat插件

<build>
    <plugins>
    	<!--Tomcat插件 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</build>

步骤二:使用Maven Helper插件快速启动项目,选中项目,右键-->Run Maven --> tomcat7:run

注意:

如果选中项目并右键点击后,看不到Run Maven和Debug Maven,这个时候就需要在IDEA中下载Maven Helper插件,

具体的操作方式为: File --> Settings --> Plugins --> Maven Helper ---> Install,

安装完后按照提示重启IDEA,就可以看到了。

Maven Tomcat插件目前只有Tomcat7版本,没有更高的版本可以使用

(如果想要配置更高版本的Tomcat,需要另外配置)

使用Maven Tomcat插件,要想修改Tomcat的端口和访问路径,可以直接修改pom.xml

<build>
    <plugins>
    	<!--Tomcat插件 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
            	<port>80</port><!--访问端口号 -->
                <!--项目访问路径配置
					未配置访问路径: http://localhost:80/tomcat-demo2/a.html
					配置/后访问路径: http://localhost:80/a.html
					如果配置成 /hello,访问路径会变成什么?
						答案: http://localhost:80/hello/a.html
				-->
                <path>/</path>
            </configuration>
        </plugin>
    </plugins>
</build>

十、在IDEA中重新部署运行

1. 为什么需要重新部署?

对于已经运行过的Web项目,如果我们增加了目录和文件,那么部署目录有可能不会自动同步过来,

从而造成实际运行的效果和我们期望的不同,

如下图中,我们在工程目录已经新增了images目录和两个图片:

但是在部署目录并没有出现:

哪怕我们执行了重新部署也没有起作用

2. 怎么重新部署

2.1. 清理部署目录

2.2. 构建

2.3. 效果

十一、导入现有的Module

直接导入即可

十二、IDEA整合Tomcat:热部署详解

On Update action/On frame deactivation

1. 应用场景

一般服务器(比如:tomcat,jboss等)启动以后,我们还需要进一步修改java代码,或者是jsp代码,

一般来说,改完重启以后才会生效,但如果配置了服务器的热部署,热部署,就可以改完代码后立即生效,而

不是重启服务器再生效,这样就会节省大量时间!

2. 两个选项

On Update action : 顾名思义,当代码改变的时候,需要IDEA为你做什么;

On Frame deactivation : 当失去焦点(比如你最小化了IDEA窗口),需要IDEA为你做什么

3. 演示模板

下面以tomcat为例,并且使用 war exploded 方式部署

3.1. On Update action

On Update action里面有四个选项(一般选Update classes and resources)

Update resources:如果发现有更新,而且更新的是资源文件( *.jsp, *.xml等,不包括java文件),就会立

刻生效

Update classes and resources: 如果发现有更新,这个是同时包含java文件和资源文件的,就会立刻生效

在运行模式下,修改java文件时不会立刻生效的;

在debug模式下,修改java文件时可以立刻生效的

当然,两种运行模式下,修改resources资源文件都是可以立刻生效的!

Redploy: 重新部署,只是把原来的war删掉,不重启服务器

Restart :重启服务器

3.2. On Frame deactivation

Do nothing : 不做任何事 (一般推荐这个,因为失去焦点的几率太大)

Update resources : 失去焦点后,修改的resources文件都会立刻生效

Update classes and resources : 失去焦点后,修改的java,resources文件都会立刻生效

和On update action中的Update classes and resources一样,

也就是运行模式修改的java文件不会生效,debug模式修改的java文件会立刻生效。

3.3. 细节问题

启动 tomcat 用debug启动(或者快捷键Shift+F9) 启动,

run启动服务器–有热部署,但不立即生效

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;