9-Tomcat

念念念北 / 2023-05-15 / 原文

1. 简介

1.1 什么是 web 服务器

Web 服务器是一个应用程序(软件),对 HTTP 协议的操作进行封装,使得程序员不必直接对协议进行操作,让 Web 开发更加便捷。主要功能是"提供网上信息浏览服务"。

image-20230515091001045

Web 服务器是安装在服务器端的一款软件,将来我们把自己写的 Web 项目部署到 Web Tomcat 服务器软件中,当 Web 服务器软件启动后,部署在 Web 服务器软件中的页面就可以直接通过浏览器来访问了。

1.2 Web 服务器软件使用步骤

  • 准备静态资源
  • 下载安装 Web 服务器软件
  • 将静态资源部署到 Web 服务器上
  • 启动 Web 服务器使用浏览器访问对应的资源

上述内容在演示的时候,使用的是 Apache 下的 Tomcat 软件,至于 Tomcat 软件如何使用,后面会详细的讲到。而对于 Web 服务器来说,实现的方案有很多,Tomcat 只是其中的一种,而除了 Tomcat 以外,还有很多优秀的 Web 服务器,比如:

image-20230515091109574

1.3 Tomcat

Tomcat 的相关概念:

  • Tomcat 是 Apache 软件基金会一个核心项目,是一个开源免费的轻量级 Web 服务器,支持 Servlet/JSP 少量 JavaEE 规范。

  • 概念中提到了 JavaEE 规范,那什么又是 JavaEE 规范呢?

    JavaEE: Java Enterprise Edition,Java 企业版。指 Java 企业级开发的技术规范总和。包含 13 项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。

  • 因为 Tomcat 支持 Servlet/JSP 规范,所以 Tomcat 也被称为 Web 容器、Servlet 容器。Servlet 需要依赖 Tomcat 才能运行。

  • Tomcat 的官网: https://tomcat.apache.org/ 从官网上可以下载对应的版本进行使用。

Tomcat 的 LOGO

image-20230515091213695

小结

通过这一节的学习,我们需要掌握以下内容:

  1. Web 服务器的作用

封装 HTTP 协议操作,简化开发

可以将 Web 项目部署到服务器中,对外提供网上浏览服务

  1. Tomcat 是一个轻量级的 Web 服务器,支持 Servlet/JSP 少量 JavaEE 规范,也称为 Web 容器,Servlet 容器。

2. 基本使用

2.1 下载

直接从官网下载

image-20230515091305426

2.2 安装

Tomcat 是绿色版,直接解压即可

  • 在 D 盘的 software 目录下,将apache-tomcat-8.5.68-windows-x64.zip进行解压缩,会得到一个apache-tomcat-8.5.68的目录,Tomcat 就已经安装成功。

    注意,Tomcat 在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。

  • 打开apache-tomcat-8.5.68目录就能看到如下目录结构,每个目录中包含的内容需要认识下,

image-20230515091342468

bin:目录下有两类文件,一种是以.bat结尾的,是 Windows 系统的可执行文件,一种是以.sh结尾的,是 Linux 系统的可执行文件。

webapps:就是以后项目部署的目录

到此,Tomcat 的安装就已经完成。

2.3 卸载

卸载比较简单,可以直接删除目录即可

2.4 启动

双击: bin\startup.bat

image-20230515091445584

启动后,通过浏览器访问 http://localhost:8080能看到 Apache Tomcat 的内容就说明 Tomcat 已经启动成功。

image-20230515091454966

2.5 乱码的情况

启动的过程中,控制台有中文乱码,需要修改 conf/logging.prooperties

image-20230515091534383

2.6 关闭

关闭有三种方式

  • 直接 x 掉运行窗口:强制关闭[不建议]
  • bin\shutdown.bat:正常关闭
  • ctrl+c: 正常关闭

2.7 配置

修改端口

  • Tomcat 默认的端口是 8080,要想修改 Tomcat 启动的端口号,需要修改 conf/server.xml

    image-20230515091623571

注: HTTP 协议默认端口号为 80,如果将 Tomcat 端口号改为 80,则将来访问 Tomcat 时,将不用输入端口号。

启动时可能出现的错误

  • Tomcat 的端口号取值范围是 0-65535 之间任意未被占用的端口,如果设置的端口号被占用,启动的时候就会包如下的错误

    image-20230515091645384

  • Tomcat 启动的时候,启动窗口一闪而过: 需要检查 JAVA_HOME 环境变量是否正确配置

    image-20230515091721246

2.8 部署

Tomcat 部署项目: 将项目放置到 webapps 目录下,即部署完成。

3. Maven 创建 Web 项目

3.1 Web 项目结构

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

image-20230515091856180

开发完成部署的 Web 项目

image-20230515091915349

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

3.2 创建 Maven Web 项目

3.2.1 使用骨架

具体的步骤包含:

1.创建 Maven 项目

2.选择使用 Web 项目骨架

3.输入 Maven 项目坐标创建项目

4.确认 Maven 相关的配置信息后,完成项目创建

5.删除 pom.xml 中多余内容

6.补齐 Maven Web 项目缺失的目录结构

  1. 创建 Maven 项目

    image-20230515092115379

  2. 选择使用 Web 项目骨架

    image-20230515095913461

  3. 输入 Maven 项目坐标创建项目

    image-20230515095933024

  4. 确认 Maven 相关的配置信息后,完成项目创建

    image-20230515095947793

  5. 删除 pom.xml 中多余内容,只留下面的这些内容,注意打包方式 jar 和 war 的区别

    image-20230515100043304

  6. 补齐 Maven Web 项目缺失的目录结构,默认没有 java 和 resources 目录,需要手动完成创建补齐,最终的目录结果如下

    image-20230515100100562

3.2.2 不使用骨架

具体的步骤包含:

1.创建 Maven 项目

2.选择不使用 Web 项目骨架

3.输入 Maven 项目坐标创建项目

4.在 pom.xml 设置打包方式为 war

5.补齐 Maven Web 项目缺失 webapp 的目录结构

6.补齐 Maven Web 项目缺失 WEB-INF/web.xml 的目录结构

  1. 创建 Maven 项目

    image-20230515100235360

  2. 选择不使用 Web 项目骨架

    image-20230515100252887

  3. 输入 Maven 项目坐标创建项目

    image-20230515100330561

  4. 在 pom.xml 设置打包方式为 war,默认是不写代表打包方式为 jar

    image-20230515100408395

  5. 补齐 Maven Web 项目缺失 webapp 的目录结构

    image-20230515100430876

  6. image-20230515100508417

  7. 补充完后,最终的项目结构如下:

    image-20230515100527717

上述两种方式,创建的 web 项目,都不是很全,需要手动补充内容,至于最终采用哪种方式来创建 Maven Web 项目,都是可以的,根据各自的喜好来选择使用即可。

3.2.3 小结

1.掌握 Maven Web 项目的目录结构

2.掌握使用骨架的方式创建 Maven Web 项目

image-20230515100642267

3.掌握不使用骨架的方式创建 Maven Web 项目

image-20230515100701869

4. IDEA 使用 Tomcat

  • Maven Web 项目创建成功后,通过 Maven 的 package 命令可以将项目打包成 war 包,将 war 文件拷贝到 Tomcat 的 webapps 目录下,启动 Tomcat 就可以将项目部署成功,然后通过浏览器进行访问即可。
  • 然而我们在开发的过程中,项目中的内容会经常发生变化,如果按照上面这种方式来部署测试,是非常不方便的
  • 如何在 IDEA 中能快速使用 Tomcat 呢?

在 IDEA 中集成使用 Tomcat 有两种方式,分别是集成本地TomcatTomcat Maven插件

4.1 集成本地 Tomcat

目标: 将刚才本地安装好的 Tomcat8 集成到 IDEA 中,完成项目部署,具体的实现步骤

  1. 打开添加本地 Tomcat 的面板

    image-20230515100852590

  2. 指定本地 Tomcat 的具体路径

    image-20230515100907587

  3. 修改 Tomcat 的名称,此步骤可以不改,只是让名字看起来更有意义,HTTP port 中的端口也可以进行修改,比如把 8080 改成 80

    image-20230515100924729

  4. 将开发项目部署项目到 Tomcat 中

    image-20230515100941907

扩展内容: xxx.war 和 xxx.war exploded 这两种部署项目模式的区别?

  • war 模式是将 WEB 工程打成 war 包,把 war 包发布到 Tomcat 服务器上
  • war exploded 模式是将 WEB 工程以当前文件夹的位置关系发布到 Tomcat 服务器上
  • war 模式部署成功后,Tomcat 的 webapps 目录下会有部署的项目内容
  • war exploded 模式部署成功后,Tomcat 的 webapps 目录下没有,而使用的是项目的 target 目录下的内容进行部署
  • 建议大家都选 war 模式进行部署,更符合项目部署的实际情况
  1. 部署成功后,就可以启动项目,为了能更好的看到启动的效果,可以在 webapp 目录下添加 a.html 页面

    image-20230515101014488

  2. 启动成功后,可以通过浏览器进行访问测试

    image-20230515101028411

  3. 最终的注意事项

    image-20230515101047182

小结:

image-20230515101113928

4.2 Tomcat Maven 插件

在 IDEA 中使用本地 Tomcat 进行项目部署,相对来说步骤比较繁琐,所以我们需要一种更简便的方式来替换它,那就是直接使用 Maven 中的 Tomcat 插件来部署项目,具体的实现步骤,只需要两步,分别是:

  1. 在 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>
    
  2. 使用 Maven Helper 插件快速启动项目,选中项目,右键-->Run Maven --> tomcat7:run

    image-20230515101221877

    注意:

    • 如果选中项目并右键点击后,看不到 Run Maven 和 Debug Maven,这个时候就需要在 IDEA 中下载 Maven Helper 插件,具体的操作方式为: File --> Settings --> Plugins --> Maven Helper ---> Install,安装完后按照提示重启 IDEA,就可以看到了。

    image-20230515101247346

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

    • 使用 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>