从零开始了解 Java Web 应用的构建与运行方式

作为一名 Spring Boot 开发者,在日常工作中我们通常接触不到 Tomcat 的底层配置。然而,为了更好地理解 Spring Boot 内部是如何工作的,我决定从最基础的 Java Web 应用入手,手动构建并部署一个简单的项目,最终在 IntelliJ IDEA 中集成 Tomcat 进行运行调试。

🧱 一、项目结构设计
首先,我们创建一个简单的 Java Web 项目结构如下:

MyWebApp/
├── src/                      # 存放 Java 源代码文件
│   └── com/example/HelloServlet.java
└── WebContent/               # 存放 Web 资源文件
    ├── index.jsp
    └── WEB-INF/
        ├── web.xml           # Web 应用的配置文件
        └── lib/              # 第三方 jar 文件(如 servlet-api)

💻 二、编写 Servlet 和 JSP 页面

HelloServlet.java

package com.example;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<h1>Hello from Servlet!</h1>");
    }
}

index.jsp
<!DOCTYPE html>
<html>
<head>
    <title>Welcome Page</title>
</head>
<body>
<h1>Welcome to MyWebApp!</h1>
<p><a href="hello">Click here to see the servlet output</a></p>
</body>
</html>

web.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>Hello</servlet-name>
        <servlet-class>com.example.HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    <!-- 默认欢迎页面 -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

⚙️ 三、手动编译与打包部署

  1. 编译 Java 源码
    进入项目根目录执行以下命令进行编译:
    javac -cp ".\WebContent\WEB-INF\lib\javax.servlet-api-4.0.1.jar" \ -d WebContent/WEB-INF/classes src/com/example/HelloServlet.java
  2. 打 WAR 包
    jar -cvf MyWebApp.war -C WebContent .
  3. 部署到 Tomcat
    将生成的 MyWebApp.war 放入 Tomcat 的 webapps 目录下,启动服务器即可访问http://localhost:8080/MyWebApp/

🧰 四、IDEA 中集成 Tomcat 运行 Web 项目
为了更高效地开发和调试,我们可以使用 IntelliJ IDEA 对上述项目进行配置,自动编译并集成 Tomcat 启动。

  1. 配置 Artifact
    进入 File > Project Structure > Artifacts,点击 + 号添加一个 Web Application: Exploded 类型的应用,并指定正确的模块和部署目录

  2. 添加依赖库
    将 servlet-api 添加为 Library,确保 IDEA 能识别接口类:

  3. 配置 Tomcat Server
    进入 Run > Edit Configurations,添加一个新的 Tomcat Server > Local 配置:
    点击 Configure 设置本地 Tomcat 安装路径。
    在 Deployment 标签下添加当前项目的 Artifact。

  4. 运行项目
    点击 Run 按钮启动 Tomcat,IDEA 会自动生成临时的 Tomcat 实例用于部署:

CATALINA_BASE: C:\Users\Hyman\AppData\Local\JetBrains\IntelliJIdea2024.1\tomcat\da3a7d24-f859-461b-9457-85f44e929f34
CATALINA_HOME: D:\hymanProject\apache-tomcat-9.0.105-windows-x64\apache-tomcat-9.0.105

服务启动前会先进行Build,

运行后的示例效果

📌 五、小结
通过以上步骤,我们完成了:
手动构建一个 Java Web 应用程序;
使用命令行编译和打包;
手动部署到 Tomcat;
在 IntelliJ IDEA 中配置自动化构建和集成 Tomcat 调试运行。
这不仅帮助我们理解了传统 Java Web 应用的工作原理,也为后续深入学习 Spring Boot 的底层机制打下了坚实的基础。

posted @ 2025-05-19 13:27  泛舟瓦尔登湖  阅读(54)  评论(0)    收藏  举报