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.properties、config.properties等)。 - 常见用途:
- 数据库连接参数
- 日志级别和路径
- 国际化文本资源
META-INF/context.xml (可选)
- 作用:为 Tomcat 配置单独的 Web 应用上下文参数,如数据源、环境变量等。
- 常见用途:
- 数据源 JNDI 配置
- 环境变量注入
其它自定义配置文件
- 如
spring.xml、application.yml、log4j.properties、logback.xml等,根据使用的框架来定。 - 作用:配置具体框架的行为和参数。
总结表
| 配置文件 | 位置 | 作用 |
|---|---|---|
| web.xml | WEB-INF/ | Web应用整体配置 |
| web-fragment.xml | WEB-INF/ | 第三方模块动态扩展主配置 |
| *.properties | WEB-INF/classes/ | 参数、国际化、日志等通用配置 |
| context.xml | META-INF/ | Tomcat专用应用级别环境配置 |
| spring.xml / application.yml 等 | WEB-INF/classes/ | 框架专用配置文件 |