整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Tomcat服务器目录和部署方式

最近有小伙伴反映在最近面试过程中,有面试官提到关于Tomcat服务器中目录的作用及其部署项目的方式,有的小伙伴天天在使用Tomcat服务器,但是可能没有注意这些细微的知识点,所以今天我就写一份资料供大家学习,多多交流。

一、Tomcat服务器每个目录作用

  1. Tomcat解压缩目录如下


  1. 每个目录的作用如下

二、Tomcat部署项目三种方式

第一种

  1. 将项目放在webapps目录下,直接将 web 项目文件(一般是复制生成的war包)复制到tomcat的webapps目录中,如下


  1. 通过 运行tomcat后,打开网页输入网址 http://127.0.0.1:8080/testweb/index.html

第二种

  1. 配置Tomcat的conf目录下的server.xml文件,
  2. 在Server.xml中添加标签体如下:
<Context docBase="…" path="…" />
docBase:项目存放的路径
path:虚拟目录,自己任意设置
<Context docBase="d:\work\testweb\web" path="/testweb" reloadable="true"/>

3.

    1. 访问地址: http://127.0.0.1:8080/testweb/index.html

第三种

  1. 在本地tomcat的conf目录中,新建Catalina/localhost目录(这里要注意文件名的大小写),然后在该目录下新建一个xml文件,名字不可以随意取,要和path后 的名字一致,我这里就应该是testweb.xml文件,它的具体内容为
<Context docBase="C:\work\testweb\web/>
  1. 配置完毕之后,这里访问注意 http://127.0.0.1:8080/xml文件名【我们这里是testweb】/index.html

Vue 作为数据驱动的前端框架,目前比较流行,因此我们公司最新的项目开发都选择 “SpringBoot 后台 + Vue 前端” 这个技术组合。如果一开始就选择这个技术组合,完全没问题。

但是,如果前端技术最初是传统的 html ,加上 Vue 后,旧的 web.xml 配置的欢迎页面为 ../index.html ,导致访问首页报错,本文来分析下这个问题。

SpringBoot + 传统 webapp

一个基于 SpringBoot 的 web 应用,工程最初选择的前端技术是 html 和 jsp 所以有 webapp 目录,且指定了 web.xml 文件:


webapps 目录下有默认首页 index.html

SpringBoot+ Vue 新组合

前端使用 Vue ,配置 vue.config.js 中 build 目录为

module.exports = {
  outputDir: './src/main/resources/static',
  publicPath: './',
  devServer: {
    port: 8080, // 端口
  },
};

maven 打包时,执行前端打包命令,完成前后台内容统一打包:

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>exec-npm-install</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>npm</executable>
              <arguments>
                <argument>install</argument>
              </arguments>
              <workingDirectory>./</workingDirectory>
            </configuration>
          </execution>
          <execution>
            <id>exec-npm-run-build</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>npm</executable>
              <arguments>
                <argument>run</argument>
                <argument>build</argument>
              </arguments>
              <workingDirectory>./</workingDirectory>
            </configuration>
          </execution>
        </executions>

新旧叠加产生的打包问题

使用了 webapp 目录,同时又有 vue 时,打包生成的 xxx.war 包部署到 Tomcat 后,直接访问应用,由于 web.xml 中指定了路径 ../index.html,后台报错:


catalina.out 异常:

22-Nov-2020 07:36:52.993 严重 [http-nio-8080-exec-5] 
org.apache.coyote.http11.Http11Processor.service 错误的处理请求
	java.lang.IllegalArgumentException: 
	资源路径[/../index.html]已规范化为无效的[null]

首页静态文件检索路径如何

第一种,static/index.html

删掉 webapps 目录下的 index.html 和 web.xml 这两个文件后,重启应用,能正常访问到 static 目录下的 index.html 页面:

第二种,如果保留 webapp 下的 index.html 和 web.xml 文件后,SpringBoot 默认的 web.xml 配置文件失效。此时,修改自定义的 web.xml 修正路径为 index.html 去掉相对路径后,再次访问,能正常:

第三种, 编辑 web.xml 配置文件路径为 ./index.html 效果和 index.html 一样。这就会走 SpringBoot 默认的静态文件查找逻辑。

启示录

第一点,自定义的 web.xml 会覆盖掉 SpringBoot 的默认配置。

第二点,web.xml 中指定了相对路径 ./index.htmlindex.html ,相对查找顺序是先 /static ,再是 / ,所以都能成功查到首页。

第三点,web.xml 中只指定一个 welcome-file 文件 ../index.html 文件,访问报错,但是如果再随便加一行配置,就能走默认查找到 static 的文件


通过各种配置测试,发现没有办法通过自定义的 web.xml 修改 SpringBoot 的应用的首页,这点也挺让笔者捉摸不透的!

、JSP简介

JSP:Java Server Pages。在传统的HTML文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页。

二、学习重点:

  • JSP语法(脚本、指令、动作)
  • JSP的内置对象
  • 创建动态的内容
  • 用户会话跟踪

三、使用tomcat软件在本地搭建服务器:

TomcatApache组织的Jakarta项目中的一个重要子项目,是Sun公司推荐的运行Servlet和JSP的容器(引擎),其源代码完全公开。有了这个服务器,就相当于在本地的计算机有了一个网站,然后我们可以通过浏览器来访问这个网站。

下载Tomcat


下载之后,将压缩包解压:

Tomcat文件

注意目录名不能有中文和空格。目录介绍如下:

  • bin:二进制执行文件。里面最常用的文件是startup.bat
  • conf:配置目录。里面最核心的文件是server.xml。可以在里面改端口号等。默认端口号是8080,也就是说,此端口号不能被其他应用程序占用。
  • lib:库文件。tomcat运行时需要的jar包所在的目录
  • logs:日志
  • temp:临时产生的文件,即缓存
  • webapps:web的应用程序。web应用放置到此目录下浏览器可以直接访问
  • work:编译以后的class文件。

软件运行之前要保证Java环境变量已经配置:

jdk环境变量

上图中,变量名为JAVA_HOME,变量值为:JDK安装的绝对路径。

注:Catalina_Home环境变量:指定tomcat在启动时启动哪个tomcat,一般不推荐配置。

回到tomcat的bin目录中, 双击startup.bat:

启动Tomcat文件

之后弹出如下界面:

启动成功

这个时候,本地的服务器就已经搭建起来了。如果想关闭服务器,可以直接关闭上面的窗口,或者在里面输入Ctrl+C禁止服务。

首先查看自己电脑的ip地址,我的计算机的ip地址为:192.168.1.112。

在浏览器中输入http://192.168.1.112:8080/(或者输入http://localhost:8080/也是可以的)。如果弹出如下界面,进入本地服务器的首页,表示tomcat安装成功并且启动起来了:

Toncat启动表示成功

三、将Tomcat和eclipse相关联:

1.打开eclipse for Java EE ,选择菜单栏Windows-->preferences,弹出如下界面: