当前位置: 首页 > news >正文

JavaWeb和MavenJavaWeb项目部署到Tomcat的三种方法

JavaWeb和MavenJavaWeb项目部署到Tomcat

  • Tomcat 的目录结构
  • 手动打包成 WAR 文件并部署
    • 部署一个基于 sevlet 技术栈的JavaWeb项目
    • 部署一个基于 SSM 技术栈的MavenJavaWeb项目
  • 修改 conf/server.xml 文件
  • conf/Catalina 方式

Tomcat 的目录结构

Tomcat 的目录结构如下图

在这里插入图片描述

  • bin目录:二进制执行脚本目录,存放windows或Linux平台上启动和关闭Tomcat的脚本文件,可以直接开启关闭tomcat服务;
  • conf目录:存放Tomcat服务器的各种全局配置文件,其中包括 :server.xml(Tomcat的主要配置文件)和web.xml等配置文件;
  • lib目录:存放Tomcat服务器以及所有web应用都可以访问的jar文件;
  • logs目录:存放Tomcat执行时的日志文件,记录tomcat的运行状态和运行信息;
  • temp目录:存放Tomcat运行时所产生的临时文件;
  • webapps:Tomcat 的默认应用部署目录,将 Web 项目放入此目录,Tomcat 会自动部署并运行(支持 WAR 包、解压后的项目文件夹两种形式);
  • work:Tomcat将JSP生成的Servlet源文件和字节码文件放到这个目录下;
  • 其他文件:许可证和说明文件。

手动打包成 WAR 文件并部署

部署一个基于 sevlet 技术栈的JavaWeb项目

在 Eclipse 的 Project Explorer 中,右键点击需要部署的 JavaWeb 项目,选择 Export,在弹出的对话框中点击 WAR file

在这里插入图片描述

在 Web project 下拉菜单中,确认是需要打包的项目,在 Destination 处点击 Browse,选择一个你希望保存 .war 文件的位置,确保 Export source files 选项没有被勾选(除非你需要部署源码),点击 Finish,Eclipse 会开始打包,完成后会在指定位置找到生成的 .war 文件。

在这里插入图片描述

如果你的 Tomcat 正在运行请先将其停止(进入 Tomcat 的 bin 目录点击 Windows:shutdown.bat 或 Linux/macOS: ./shutdown.sh),再将上一步生成的 web.war 文件复制到本地 Tomcat 安装目录下的 webapps 文件夹中,如下

在这里插入图片描述

进入 Tomcat 的 bin 目录点击 Windows: startup.bat 或 Linux/macOS: ./startup.sh 运行启动脚本,当 Tomcat 启动时,它会自动检测到 webapps 目录下的新 .war 文件,并将其解压成一个同名的文件夹,web.war 会被解压成 web 文件夹,如下

在这里插入图片描述

打开浏览器,通过 http://localhost:8080/项目名/访问的文件名 即可访问该项目

在这里插入图片描述

部署一个基于 SSM 技术栈的MavenJavaWeb项目

这种部署项目的方式对于这两种技术栈的步骤只有打包方式不同,其余操作均相同

该基于 SSM 技术栈的MavenJavaWeb项目内容在我之前的博客中详细介绍过,博客地址如下:ssm整合项目
此处我们需要注意的是在 pom.xml 文件中 packaging 标签用于设置打包方式
执行 package或 install 命令,执行成功控制台输出 BUILD SUCCESS

在这里插入图片描述

执行成功后 Maven 会在项目根目录下创建一个 target 文件夹,在 target 目录下找到打包项目 WAR 文件,文件名通常是 项目名-版本号.war

在这里插入图片描述

将打包好的文件复制到 Tomcat 安装目录下的 webapps 文件夹下

在这里插入图片描述

Tomcat 在启动时会自动检测 webapps 目录下的新 WAR 文件,并将其解压成一个同名文件夹,然后部署它

打开浏览器,通过 http://localhost:8080/项目名/访问的文件名 即可访问该项目

在这里插入图片描述

需要注意的是这里可能会需要一个非常常见的部署问题,测试的时候正常,但部署之后再点击页面里的超链接可能会报404,还需要在地址栏中加上项目路径才可以访问成功,这是因为开发环境和部署环境的上下文路径不一致导致的。

在这里插入图片描述

在 IDE(如 IDEA/Eclipse)中测试时,如上图项目被部署在根上下文路径,此时项目的访问根路径是 http://localhost:8080/。部署到独立 Tomcat 后,解压后的WAR文件夹名会被 Tomcat 直接作为项目的默认上下文路径,所以该项目访问地址是 http://localhost:8080/ssmDemo-1.0-SNAPSHOT,浏览器解析 /account/findAll.do 时,/ 开头的路径是浏览器级别的绝对路径,它的解析规则是从 域名 / IP对应的最顶层地址 开始拼接,而不是从项目根目录开始,依然拼成 http://localhost:8080/account/findAll.do,并不是 http://localhost:8080/项目名/访问的文件名,找不到 account/findAll.do 对应的项目,所以返回 404。

解决方式:不要在代码中硬编码上下文路径,而是让程序在运行时动态获取上下文路径
使用 JSTL 的 <c:url> 标签
确保 JSP 页面顶部引入了 JSTL 标签库:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
修改超链接和表单提交地址,将原来的相对路径用 <c:url> 标签包裹起来:<a href="<c:url value='/account/findAll.do' />">查询所有账户</a>

修改 conf/server.xml 文件

打开 tomcat 下 conf/server.xml 文件,在 <Host> 标签内输入项目配置信息,这种方法无需将项目复制到 Tomcat 的 webapps 目录,灵活性更高

Tomcat 的 server.xml 是核心配置文件,负责定义服务器的端口、引擎、虚拟主机(Host)等核心组件。其中 Host 标签代表一个虚拟主机(默认是 localhost),所有 Web 项目的部署配置都需嵌套在 <Host> 内。

在这里插入图片描述

<Context path="/web" docBase="C:/Users/HP/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/web" reloadable="true" />

通过添加 <Context> 元素,我们告诉 Tomcat 当浏览器访问 http://主机名:端口/[path] 时,实际去 docBase 指定的路径加载 Web 项目资源。

path:浏览器访问时的路径名
docBase:Web 项目的根目录在磁盘上的实际位置,即编译后的项目路径
reloadble: 项目文件修改后,Tomcat 是否自动重新加载项目

启动 Tomcat 后打开浏览器,通过 http://localhost:8080/项目名/访问的文件名 即可访问该项目

在这里插入图片描述

部署前面那个基于 SSM 技术栈的JavaWeb项目使用的是

<Context path="/ssm" docBase="D:/javacode/ssmDemo/target/ssmDemo-1.0-SNAPSHOT" reloadable="false" />

打开浏览器,通过 http://localhost:8080/项目名/访问的文件名 即可访问该项目

在这里插入图片描述

由于使用了 JSTL 的 <c:url> 标签,访问地址不再出错

conf/Catalina 方式

进入到 apache-tomcat-7.0.52\conf\Catalina\localhost 目录,新建一个 项目名.xml 文件 ,在这个新建的 xml 文件中,增加下面配置语句

在这里插入图片描述

<Context path="/web" docBase="C:/Users/HP/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/web" reloadable="true" />

在这种部署方式下,path 属性可以省略,因为 Tomcat 会自动使用 XML 文件名作为 path,如果同时指定了文件名和 path 属性,path 属性会覆盖文件名。

这种方法的本质是将每个 Web 项目的部署配置(<Context>元素)从 Tomcat 的核心配置文件 server.xml 中分离出来,每个项目使用一个独立的 XML 文件进行配置。
配置文件存放位置为 Tomcat安装目录/conf/Catalina/localhost/,配置文件内部只包含该项目的 <Context> 元素,当 Tomcat 启动时,它会自动扫描 conf/Catalina/localhost/ 目录下的所有 .xml 文件,每找到一个文件,它就会根据文件名和文件内的配置来部署一个 Web 应用。

启动 Tomcat 后打开浏览器,通过 http://localhost:8080/项目名/访问的文件名 即可访问该项目

在这里插入图片描述

部署前面那个基于 SSM 技术栈的JavaWeb项目使用的是

<Context docBase="D:/javacode/ssmDemo/target/ssmDemo-1.0-SNAPSHOT" reloadable="false" />

在这里插入图片描述

由于使用了 JSTL 的 <c:url> 标签,访问地址不再出错

http://www.dtcms.com/a/462059.html

相关文章:

  • 备案的网站建设书是什么网站后台策划
  • 组合两个表-力扣
  • 网站内页不收录医院网站建设ppt
  • 1.2 Java语言的特性
  • 网络TCP解析
  • C++ -->STL 搜索平衡二叉树 AVL树
  • 建德做网站wordpress指定分类名称
  • 如何偷别人dedecms网站的模板购物网站难做
  • 网站建设属于硬件还是软件网易云音乐wordpress
  • 帝国cms 微信小程序的登录逻辑
  • 什么网站可以教做面包福州企业网站模板建站
  • 视频网站建设wordpress主题路径
  • 将爬虫部署到服务器:Scrapy+Scrapyd 实现定时任务与监控
  • billfish素材管理工具小说阅读
  • 数据结构-ArrayList与顺序表
  • 如何给移动固态硬盘分区?分区后无法识别怎么办?
  • 怎么注册网自己的网站吗天津企业网站建站模板
  • 基于spark的基于可穿戴设备运动数据预测
  • ref/reactive 声明变量 有什么区别??
  • 多模态RAG面试笔记整理
  • VoceChat:轻量可自托管的聊天系统
  • 网站自适应周口网站建设电话
  • 免费绑定域名的建站网站建设源码
  • HDFS简介
  • 免费软件app下载大全正能量网站lol做视频那个网站好
  • 佛山有那些定制网站建设公司广告图片网站源码
  • 使用 Python 调用 Sora 2 API 批量生成自媒体爆款视频
  • Vue2中组件的通信方式总结
  • 建网站需要什么资料临淄58同城招聘信息网
  • 学校网站建设配套制度网站基础三要素