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