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

Java应用快速部署Tomcat指南

将Java应用部署到Apache Tomcat服务器是开发Web应用过程中常见的任务。Tomcat是一个免费且开源的Servlet容器,它为Java应用提供了运行环境。本文将介绍如何准备你的Java应用,并将其部署到Tomcat服务器上。

Java 应用部署

tomcat 的根目录结构
Tomcat中默认网站根目录是$CATALINA_BASE/webapps/
在Tomcat中部署主站应用程序和其他应用程序,和之前WEB服务程序不同
nginx
假设在nginx中部署2个网站应用eshop、forum,假设网站根目录是/data/nginx/html,那么部署可以是这样的,eshop解压缩所有文件放到 /data/nginx/html/ 目录下,forum 的文件放在 /data/nginx/html/forum/下
最终网站链接有以下对应关系

http://localhost/ 对应于eshop的应用,即 /data/nginx/html/
http://localhost/forum/ 对应于forum的应用,即/data/nginx/html/forum/

Tomcat
Tomcat中默认网站根目录是CATALINA_BASE/webapps/
在Tomcat的webapps目录中,有个非常特殊的目录ROOT,它就是网站默认根目录
将eshop解压后的文件放到这个CATALINA_BASE/webapps/ROOT中
bbs解压后文件都放在CATALINA_BASE/webapps/forum目录下$CATALINA_BASE/webapps下面的每个目录都对应一个Web应用,即WebApp
最终网站链接有以下对应关系

http://localhost/ 对应于eshop的应用WebApp,即$CATALINA_BASE/webapps/ROOT/目录,
http://localhost/forum/ 对应于forum的应用WebApp,即$CATALINA_BASE/webapps/forum/

如果同时存在CATALINA_BASE /webapps/ROOT/forum,仍以$CATALINA_BASE/webapps/forum/ 优先生效。
每一个虚拟主机都可以使用appBase指令配置自己的站点目录,使用appBase目录下的ROOT目录作为主站目录。

主页目录和编码

[root@ubuntu2404 ~]#cat /usr/local/src/tomcat/webapps/ROOT/index.html
<h1>你好</h1>
[root@ubuntu2404 ~]#curl 192.168.1.20:8080/index.html -I
HTTP/1.1 200
Accept-Ranges: bytes
ETag: W/"16-1746341360522"
Last-Modified: Sun, 04 May 2025 06:49:20 GMT
Content-Type: text/html     #tomcat无指定编码,浏览器自动识别为GBK,可能会导致乱码
Content-Length: 16
Date: Sun, 04 May 2025 06:50:04 GMT#浏览器的设置默认不是UTF-8,可能会导致乱码,下载Chart插件可解决

在这里插入图片描述
修改网页指定编码

[root@ubuntu2404 tomcat]#vim webapps/ROOT/index.html
<html>
<head>  
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>tomcat</title>
</head>
<h1>你好</h1>

在这里插入图片描述

JSP WebApp目录结构

CATALINA_BASE/webapps下面的每个目录对应的WebApp,可能有以下子目录,但下面子目录是非必须的

  • 主页配置:默认按以下顺序查找主页文件 index.html,index.htm、index.jsp
  • WEB-INF/:当前目录WebApp的私有资源路径,通常存储当前应用使用的web.xml和context.xml 配置文件
  • META-INF/:类似于WEB-INF,也是私有资源的配置信息,和WEB-INF/目录一样浏览器无法访问
  • classes/:类文件,当前webapp需要的类
  • lib/:当前应用依赖的jar包

主页设置

全局配置实现修改默认主页文件
默认情况下 tomcat 会在$CATALINA_BASE/webapps/ROOT/目录下按以下次序查找文件,找到第一个则进行显示
index.html
index.htm
index.jsp
可以通过修改 $CATALINA_BASE/conf/web.xml 中的下面标签内容修改默认页文件
修改默认主页文件

[root@ubuntu2404 tomcat]#pwd
/usr/local/src/tomcat
[root@ubuntu2404 tomcat]#echo '<h1>www.caoge.com</h1>' > webapps/ROOT/index.html
[root@ubuntu2404 ~]#curl 192.168.1.20:8080
<h1>www.caoge.com</h1>[root@ubuntu2404 tomcat]#cat conf/web.xml <welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
[root@ubuntu2404 tomcat]#vim conf/web.xml<welcome-file-list><welcome-file>index.jsp</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.html</welcome-file></welcome-file-list>
</web-app>
[root@ubuntu2404 tomcat]#systemctl restart tomcat
[root@ubuntu2404 ~]#curl 192.168.1.20:8080

WebApp的专用配置文件

将上面主配置文件conf/web.xml中的welcome-file-list标签内容,复制到/usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml中,如下所示
针对主站点根目录设置专用配置文件

[root@ubuntu2404 tomcat]#vim webapps/ROOT/WEB-INF/web.xml 
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaeehttps://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"version="6.1"metadata-complete="true"><display-name>Welcome to Tomcat</display-name><description><welcome-file-list><welcome-file>index.html</welcome-file>   #修改三个文件的顺序<welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list></description></web-app>
#配置修改后,无需重启tomcat服务,即可观察首页变化
[root@ubuntu2404 ~]#curl 192.168.1.20:8080
<h1>www.caoge.com</h1>

配置规则
webApp的专有配置优先于系统的全局配置
修改系统的全局配置文件,需要重新启动服务生效
修改 webApp的专有配置,无需重启即可生效

应用部署实现

WebApp应用的归档格式
.war:WebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如jsp,html,配置文件等
.jar:EJB类文件的打包压缩类zip格式文件,包括很多的class文件,网景公司发明
.rar:资源适配器类打包文件,目前已不常用
.ear:企业级WebApp打包,目前已不常用
传统应用开发测试后,通常打包为war格式,这种文件部署到Tomcat的webapps目录下,并默认会自动解包展开和部署上线

#conf/server.xml中文件配置
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

部署方式

部署Deploy:将webapp的源文件放置到目标目录,通过web.xml和context.xml文件中配置的路径就可以访问该webapp,通过类加载器加载其特有的类和依赖的类到JVM上,即:最终用户可以通过浏览器访问该应用。
自动部署:Tomcat一旦发现多了一个web应用APP.war包,默认会自动把它解压缩,加载并启动起来。

手动部署

  • 冷部署:将webapp放到指定目录,才去启动Tomcat服务。
  • 热部署:Tomcat服务不停止,需要依赖manager、ant脚本、tcd(tomcat client deployer)等工具。

反部署 undeploy:停止webapp运行,并从JVM上清除已经加载的类,从Tomcat应用目录中移除部署的文件。
启动 start:启用 webapp 能够访问
停止 stop:禁用 webapp 不能访问,不能提供服务,但是JVM并不清除它

部署WebApp的目录结构

常见开发项目目录组成

#目录结构一般由开发用工具自动生成,以下模拟生成相关目录
mkdir projects/myapp/{WEB-INF,META-INF,classes,lib} -pv
mkdir: 已创建目录 "projects"
mkdir: 已创建目录 "projects/myapp"
mkdir: 已创建目录 "projects/myapp/WEB-INF"
mkdir: 已创建目录 "projects/myapp/META-INF"
mkdir: 已创建目录 "projects/myapp/classes"
mkdir: 已创建目录 "projects/myapp/lib"#常见应用首页,内容就用前面的test.jsp内部
vim projects/myapp/index.jsp#手动复制项目目录到webapps目录下去
cp -r projects/myapp/ /usr/local/tomcat/webapps/#注意权限和属性
chown -R tomcat:tomcat /usr/local/tomcat/webapps/myapp#访问http://YourIP:8080/myapp/

实战案例:手动的应用部署

部署主页目录下的应用WebApp

[root@ubuntu2404 tomcat]#vim webapps/ROOT/status.jsp 
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>jsp例子</title>
</head>
<body>
后面的内容是服务器端动态生成字符串,最后拼接在一起
<%
out.println("hello jsp");
%>
<br>
<%=request.getRequestURL()%>
</body>
</html>
[root@ubuntu2404 ~]#curl 192.168.1.20:8080/status.jsp<!DOCTYPE html>
<html>
<head>
http://www.lryc.cn/news/620582.html

相关文章:

  • **超融合架构中的发散创新:探索现代编程语言的挑战与机遇**一、引言随着数字化时代的快速发展,超融合架构已成为IT领域的一种重要趋势
  • ts概念讲解
  • 网络原理-HTTP
  • 一致性哈希Consistent Hashing
  • 【代码随想录day 20】 力扣 669. 修剪二叉搜索树
  • 力扣-64.最小路径和
  • 玩转Docker | 使用Docker部署JSON格式化工具ZJSON
  • iOS Sqlite3
  • 磁盘瓶颈现形记 - iostat让I/O压力无所遁形
  • 「iOS」————设计架构
  • iOS 26 一键登录失效:三大运营商 SDK 无法正常获取手机号
  • iOS性能监控新方法多版本对比与趋势分析实战指南
  • iOS混淆工具有哪些?游戏 App 防护下的混淆与加固全攻略
  • 网络通信---Axios
  • iOS App TestFlight 上架全流程案例,从 0 到 1 完成内测分发
  • Docker 部署:Web SSH、RDP、VNC 多协议全能远程管理工具
  • 零基础数据结构与算法——第七章:算法实践与工程应用-搜索引擎
  • 洗浴中心泡池水过滤系统原理深度解析与工程实践
  • 数智先锋 | 告别运维黑盒!豪鹏科技×Bonree ONE构建全栈智能可观测体系
  • 【网络】TCP/UDP总结复盘
  • Ollama如何分别使用2张H100GPU和4张A100部署GPT-OSS-120B全指南:硬件配置与负载均衡实战
  • PostgreSQL——触发器
  • Nginx学习笔记(八)—— Nginx缓存集成
  • GraphRAG查询(Query)流程实现原理分析
  • Unity人形角色IK优化指南
  • C++-setmap详解
  • 图灵测试:人工智能的“行为主义判据”与哲学争议
  • Elastic 获得 2025 年 Google Cloud DORA “以 AI 构建未来架构” 奖
  • 认知系统的架构: 认知残余三角形、认知主体意识 和认知演进金字塔(腾讯元宝)
  • Vue Vant应用-数据懒加载