test
This commit is contained in:
226
资源映射目录配置总结.md
Normal file
226
资源映射目录配置总结.md
Normal file
@@ -0,0 +1,226 @@
|
||||
# 项目资源映射目录配置总结
|
||||
|
||||
## 概览
|
||||
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. 性能优化
|
||||
- 静态资源映射支持浏览器缓存
|
||||
- 排除拦截器减少性能开销
|
||||
- 合理设置跨域缓存时间
|
||||
|
||||
## 总结
|
||||
该项目的静态资源配置完善,支持多种类型文件的访问,包括上传文件、临时文件、报表文件等。通过统一的管理方式,确保了文件的安全访问和性能优化。
|
||||
Reference in New Issue
Block a user