Java Web 工程全貌

通过下图,我们可以一览 Java Web 工程的全貌

通过上图,我们能够基本窥探整个 Java Web 工程的面貌,包括前端,后端,甚至是运维。

接下来,我们就结合文字描述,加深理解。

部署Vue前端和Spring后端涉及到不同的步骤,以下是一个详细的部署流程,包括Tomcat的不同部署方法。

部署Vue前端

  1. 构建Vue项目 :
    • 在Vue项目根目录下运行 npm run buildyarn build 命令,生成 dist 文件夹。
  2. 上传到服务器 :
    • dist 文件夹上传到服务器的某个目录,例如 /var/www/vue-app
  3. 配置Nginx :
    • 创建Nginx配置文件,配置服务器块来服务Vue应用的静态文件。
nginx 复制代码
server {
    listen 80;
    server_name yourdomain.com;
    location / {
        root /var/www/vue-app;
        try_files $uri $uri/ /index.html;
    }
}
  • 重载Nginx以应用新配置。

部署Spring后端

使用Spring自带的嵌入式Tomcat

如果你的Spring项目使用的是Spring Boot并且打包成了可执行的jar包,你可以按照以下步骤部署:

  1. 打包Spring Boot应用 :
    • 运行 mvn clean packagegradle build 命令,生成可执行的jar包。
  2. 上传jar包到服务器 :
    • 将jar包上传到服务器的某个目录。
  3. 运行Spring Boot应用 :
    • 使用 java -jar 命令运行jar包。
bash 复制代码
nohup java -jar /path/to/your/spring-boot-app.jar &

这种方式下,Spring Boot应用会使用内嵌的Tomcat服务器。

使用自带的Tomcat

如果你的Spring项目是一个传统的Java Web应用,并且打包成了war包,你需要部署到外部的Tomcat服务器:

  1. 打包Spring应用 :
    • 运行 mvn clean package 命令,生成war包。
  2. 上传war包到Tomcat :
    • 将war包复制到Tomcat的 webapps 目录下。
  3. 启动Tomcat :
    • 如果Tomcat没有运行,启动Tomcat。Tomcat会自动解压war包并部署应用。
bash 复制代码
sudo systemctl start tomcat

Java Web开发的Java代码运行位置

Java Web开发的Java代码是运行在Tomcat服务器上的。Tomcat是一个Servlet容器,它负责管理Java Web应用的整个生命周期,包括加载、运行、卸载等。

以下是代码的运行流程:

  • Tomcat:Tomcat是由Java编写的一个Servlet容器,它运行在JVM(Java虚拟机)上。
  • JVM:Java代码最终是通过JVM运行的。当Tomcat启动时,它会启动一个或多个JVM实例。
  • Java代码 :你的Spring应用中的Java代码会被编译成字节码,这些字节码由JVM执行。当请求到达Tomcat时,Tomcat会调用相应的Servlet来处理请求,这些Servlet是由你的Spring框架管理的。
    所以,Java Web应用的Java代码不是直接通过 main 方法运行的,而是作为Servlet在Tomcat容器中运行的。当Tomcat启动时,它会加载并初始化这些Servlet,然后等待并处理来自客户端的请求。

Tomcat服务器运行位置

Tomcat服务器,作为一个Java Servlet容器,是运行在Java虚拟机(JVM)之上的。以下是详细的层次结构:

  1. 操作系统:Tomcat服务器首先需要安装在操作系统上,比如Linux、Windows或macOS。
  2. Java虚拟机(JVM):在操作系统之上,需要安装Java开发工具包(JDK),它包含Java运行时环境(JRE)和JVM。JVM是Java程序运行的环境,它负责将Java字节码转换为特定操作系统的机器码。
  3. Tomcat服务器 :Tomcat本身是用Java编写的,因此它作为一个Java应用程序运行在JVM之上。当启动Tomcat时,实际上是启动了一个Java进程,这个进程加载Tomcat的类和资源,并启动服务器。
    以下是Tomcat启动和运行的过程:
  • 当你启动Tomcat时,通常会运行一个脚本(例如在Linux上是 catalina.sh,在Windows上是 catalina.bat)。

  • 这个脚本会启动JVM,并指定Tomcat的启动类 org.apache.catalina.startup.Bootstrap 作为主类。

  • JVM启动后,会加载Bootstrap类,Bootstrap类会初始化Tomcat服务器,包括其各种组件如Catalina(Servlet容器)、Coyote(连接器)等。

  • 一旦Tomcat启动并运行,它就可以接收来自客户端的HTTP请求,并将这些请求转发到相应的Web应用程序进行处理。
    总结来说,Tomcat服务器是运行在JVM之上的,而JVM又是运行在操作系统之上的。这个过程可以表示为:

    操作系统 (如 Linux)
    |
    Java虚拟机 (JVM)
    |
    Tomcat服务器
    |
    Web应用程序 (WAR包)

相关推荐
yeshihouhou6 分钟前
# sse实现进度条功能
java
程序媛徐师姐7 分钟前
Java基于微信小程序的线上教育商城,附源码+文档说明
java·微信小程序·线上教育商城小程序·java线上教育商城小程序·线上教育商城微信小程序·线上教育小程序·线上教育微信小程序
有梦想的小何7 分钟前
从结算需求出发:基于库存日快照与分区的结算报表的Java实践
java·数据库·mysql
韩立学长9 分钟前
基于Springboot的商品库存管理系统369jr3t9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
java·数据库·spring boot·后端
长安110810 分钟前
mysql(C++)----常用的sql命令
java·sql·mysql
醇氧14 分钟前
Spring AI Alibaba 学习(一) 集成阿里云百炼大模型应用
java·学习·spring
I_LPL14 分钟前
day52 代码随想录算法训练营 图论专题5
java·算法·图论·并查集
y = xⁿ22 分钟前
【Java八股锁机制的认识】synchronized和reentrantlock区分,锁升级机制
java·开发语言·后端
Barkamin27 分钟前
(有头)链表的实现(Java)
java·数据结构·链表