Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Java Web 基础

传统 Java Web 项目

设置 Maven 仓库镜像

https://juejin.cn/post/7238403651022454821

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

通过 WAR 包部署到 Tomcat

docker run -it --rm -p 8888:8080 -p 8009:8009 -v ROOT.war:/usr/local/tomcat/webapps/ROOT.war tomcat:9.0.30

Maven 标准 Java Web 项目结构

project-root/
├── src/
│   ├── main/
│   │   ├── java/         # Java 源码
│   │   ├── resources/    # 配置文件、资源
│   │   └── webapp/       # Web 目录(Servlet/JSP/HTML 等)
│   │       ├── WEB-INF/
│   │       │   └── web.xml
│   │       └── static/
│   └── test/
│       ├── java/         # 测试源码
│       └── resources/    # 测试资源
├── pom.xml               # Maven 配置文件

WAR 包

WAR 的格式,任意文件读取,敏感文件

WAR 包(Web Application Archive,Web 应用归档包)是一种用于 Java Web 应用的压缩文件格式,扩展名为.war,便于在诸如 Tomcat 等 Java Web 服务器上部署和分发。其结构和内容具有如下特点:

  • 根目录:存放静态文件(如 HTML、JSP、图片、样式等)
  • WEB-INF/:Web 应用的内部资源目录,不能被直接访问
    • web.xml:Web 应用的部署描述文件(必须)
    • classes/:编译后的 Java 类文件
    • lib/:项目依赖的 jar 包

1. WEB-INF/web.xml

  • 作用:Web 应用的核心部署描述符,定义了 Servlets、过滤器、监听器、欢迎页等。
  • 常见配置
    • Servlet 映射(URL 路由)
    • 过滤器(Filter)定义与映射
    • Session 配置
    • 错误页面
    • MIME 类型等

WEB-INF/web-fragment.xml (可选)

  • 作用:提供 Web 应用的模块化配置。多个 jar 包(如第三方库)可自带该文件,将其配置合并进主应用的 web.xml
  • 常见用途:依赖库自动注册 Servlet、Filter 等。

WEB-INF/classes/ 下的 *.properties 配置文件

  • 作用:保存应用的自定义参数、国际化资源(如 messages.propertiesconfig.properties 等)。
  • 常见用途
    • 数据库连接参数
    • 日志级别和路径
    • 国际化文本资源

META-INF/context.xml (可选)

  • 作用:为 Tomcat 配置单独的 Web 应用上下文参数,如数据源、环境变量等。
  • 常见用途
    • 数据源 JNDI 配置
    • 环境变量注入

其它自定义配置文件

  • spring.xmlapplication.ymllog4j.propertieslogback.xml 等,根据使用的框架来定。
  • 作用:配置具体框架的行为和参数。

总结表

配置文件位置作用
web.xmlWEB-INF/Web应用整体配置
web-fragment.xmlWEB-INF/第三方模块动态扩展主配置
*.propertiesWEB-INF/classes/参数、国际化、日志等通用配置
context.xmlMETA-INF/Tomcat专用应用级别环境配置
spring.xml / application.yml 等WEB-INF/classes/框架专用配置文件