Files
server/资源映射目录配置总结.md
2025-11-22 20:05:53 +08:00

226 lines
7.1 KiB
Markdown

# 项目资源映射目录配置总结
## 概览
Spring Boot项目的静态资源映射配置主要在 `WebAppConfig.java` 文件中定义,包含了文件上传、图片、临时文件等多种资源的映射配置。
## 静态资源映射配置
### 1. 文件上传资源映射
**配置文件**: `WebAppConfig.java` 第57-60行
```java
// 上传文件访问映射
registry.addResourceHandler("/upload/**")
.addResourceLocations("file:" + uploadPath + "/");
```
- **虚拟路径**: `/upload/**`
- **物理路径**: 通过 `${upload.path}` 配置获取
- **开发环境**: `/Users/ab/Desktop/tmp/data/tomcat/webapps/upload/`
- **生产环境**: `/app/data/upload/` (Docker环境)
### 2. 图片文件资源映射
**配置文件**: `WebAppConfig.java` 第61-64行
```java
// 图片文件访问映射(外部存储)
registry.addResourceHandler("/img/**")
.addResourceLocations("file:" + imgUploadPath + "/");
```
- **虚拟路径**: `/img/**`
- **物理路径**: 通过 `${img.upload}` 配置获取
- **开发环境**: `/Users/ab/Desktop/tmp/data/upload/`
- **生产环境**: `/app/data/images/` (Docker环境)
### 3. 临时文件资源映射
**配置文件**: `WebAppConfig.java` 第65-68行
```java
// 临时文件访问映射
registry.addResourceHandler("/temp/**")
.addResourceLocations("file:" + tempPath + "/");
```
- **虚拟路径**: `/temp/**`
- **物理路径**: 通过 `${temp.path}` 配置获取
- **开发环境**: `/Users/ab/Desktop/tmp/data/tempPath/`
- **生产环境**: `/app/data/temp/` (Docker环境)
### 4. 解压文件资源映射
**配置文件**: `WebAppConfig.java` 第69-72行
```java
// 解压文件访问映射
registry.addResourceHandler("/unzip/**")
.addResourceLocations("file:" + unzipPath + "/");
```
- **虚拟路径**: `/unzip/**`
- **物理路径**: 通过 `${unzip.path}` 配置获取
- **开发环境**: `/Users/ab/Desktop/tmp/data/unzip/`
- **生产环境**: `/app/data/unzip/` (Docker环境)
### 5. 报表文件资源映射
**配置文件**: `WebAppConfig.java` 第73-76行
```java
// 报表文件访问映射
registry.addResourceHandler("/report/**")
.addResourceLocations("file:" + reportPath + "/");
```
- **虚拟路径**: `/report/**`
- **物理路径**: 通过 `${report.path}` 配置获取
- **开发环境**: `/Users/ab/Desktop/tmp/data/report/path/`
- **生产环境**: `/app/data/reports/` (Docker环境)
### 6. Webapp静态资源映射
#### 6.1 PDF文件资源
**配置文件**: `WebAppConfig.java` 第77-79行
```java
// webapp静态资源访问映射
registry.addResourceHandler("/pdffile/**")
.addResourceLocations("classpath:/pdffile/");
```
- **虚拟路径**: `/pdffile/**`
- **物理路径**: `src/main/resources/pdffile/`
- **实际位置**: JAR包内的资源文件
#### 6.2 图片资源
**配置文件**: `WebAppConfig.java` 第80-82行
```java
registry.addResourceHandler("/images/**")
.addResourceLocations("classpath:/images/");
```
- **虚拟路径**: `/images/**`
- **物理路径**: `src/main/webapp/images/`
- **实际位置**: Web应用目录下的静态资源
#### 6.3 模板资源
**配置文件**: `WebAppConfig.java` 第83-85行
```java
registry.addResourceHandler("/template/**")
.addResourceLocations("classpath:/template/");
```
- **虚拟路径**: `/template/**`
- **物理路径**: `src/main/resources/templates/`
- **实际位置**: JAR包内的模板资源
### 7. Swagger API文档资源映射
**配置文件**: `SwaggerConfig.java`
```java
// Swagger UI访问映射
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
```
- **虚拟路径**: `/swagger-ui.html``/webjars/**`
- **物理路径**: JAR包内的Swagger资源
## 拦截器排除配置
### TokenInterceptor排除路径
**配置文件**: `WebAppConfig.java` 第28-30行
```java
registry.addInterceptor(tokenInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/upload/**", "/images/**", "/temp/**", "/unzip/**", "/report/**", "/pdffile/**", "/template/**");
```
- 所有静态资源路径都被排除在Token拦截之外
- 确保静态资源可以直接访问,无需身份验证
## CORS跨域配置
### 跨域设置
**配置文件**: `WebAppConfig.java` 第34-42行
```java
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.allowCredentials(true)
.exposedHeaders(HttpHeaders.SET_COOKIE)
.maxAge(3600L);
```
- 允许所有域名跨域访问
- 允许所有HTTP方法
- 允许所有请求头
## 静态资源目录结构
### src/main/webapp/
```
webapp/
├── checkCode.html # 验证码页面
├── downLoad.html # 下载页面
├── image.html # 图片显示页面
├── index.html # 主页
├── jquery.min.js # jQuery库
├── login.html # 登录页面
├── orginSingleUpload.html # 单文件上传页面
├── upload.html # 上传页面
├── dist/ # 前端构建目录
├── images/ # 前端图片资源
├── pdffile/ # PDF相关资源
├── pdfjs/ # PDF.js库
├── pdfxml/ # PDF模板
├── template/ # 前端模板
└── WEB-INF/ # Web应用配置
```
### src/main/resources/
```
resources/
├── application-dev.yml # 开发环境配置
├── application-prod.yml # 生产环境配置
├── application.yml # 默认配置
├── logback-spring.xml # 日志配置
├── ocr.properties # OCR配置
├── ureport-config.properties # 报表配置
├── templates/ # 后端模板
├── mapper/ # MyBatis映射文件
└── SIMYOU.TTF # 字体文件
```
## 访问示例
### 1. 访问上传的文件
```
http://localhost:9081/point-strategy/upload/filename.pdf
```
### 2. 访问图片
```
http://localhost:9081/point-strategy/img/image.jpg
```
### 3. 访问临时文件
```
http://localhost:9081/point-strategy/temp/tempfile.pdf
```
### 4. 访问静态资源
```
http://localhost:9081/point-strategy/images/logo.png
http://localhost:9081/point-strategy/pdffile/template.pdf
http://localhost:9081/point-strategy/template/report.html
```
## 配置要点
### 1. 路径规范化
- 所有物理路径都应该以 `/` 结尾
- 虚拟路径以 `/**` 结尾支持子路径访问
- 使用 `file:` 前缀访问外部文件系统
### 2. 环境差异化
- 开发环境使用本地磁盘路径
- 生产环境使用Docker容器安全路径
- 通过环境变量支持自定义路径配置
### 3. 安全性
- 静态资源排除身份验证拦截
- 支持跨域访问
- 通过虚拟路径隐藏物理路径
### 4. 性能优化
- 静态资源映射支持浏览器缓存
- 排除拦截器减少性能开销
- 合理设置跨域缓存时间
## 总结
该项目的静态资源配置完善,支持多种类型文件的访问,包括上传文件、临时文件、报表文件等。通过统一的管理方式,确保了文件的安全访问和性能优化。