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

7.1 KiB

项目资源映射目录配置总结

概览

Spring Boot项目的静态资源映射配置主要在 WebAppConfig.java 文件中定义,包含了文件上传、图片、临时文件等多种资源的映射配置。

静态资源映射配置

1. 文件上传资源映射

配置文件: WebAppConfig.java 第57-60行

// 上传文件访问映射
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行

// 图片文件访问映射(外部存储)
registry.addResourceHandler("/img/**")
        .addResourceLocations("file:" + imgUploadPath + "/");
  • 虚拟路径: /img/**
  • 物理路径: 通过 ${img.upload} 配置获取
  • 开发环境: /Users/ab/Desktop/tmp/data/upload/
  • 生产环境: /app/data/images/ (Docker环境)

3. 临时文件资源映射

配置文件: WebAppConfig.java 第65-68行

// 临时文件访问映射
registry.addResourceHandler("/temp/**")
        .addResourceLocations("file:" + tempPath + "/");
  • 虚拟路径: /temp/**
  • 物理路径: 通过 ${temp.path} 配置获取
  • 开发环境: /Users/ab/Desktop/tmp/data/tempPath/
  • 生产环境: /app/data/temp/ (Docker环境)

4. 解压文件资源映射

配置文件: WebAppConfig.java 第69-72行

// 解压文件访问映射
registry.addResourceHandler("/unzip/**")
        .addResourceLocations("file:" + unzipPath + "/");
  • 虚拟路径: /unzip/**
  • 物理路径: 通过 ${unzip.path} 配置获取
  • 开发环境: /Users/ab/Desktop/tmp/data/unzip/
  • 生产环境: /app/data/unzip/ (Docker环境)

5. 报表文件资源映射

配置文件: WebAppConfig.java 第73-76行

// 报表文件访问映射
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行

// webapp静态资源访问映射
registry.addResourceHandler("/pdffile/**")
        .addResourceLocations("classpath:/pdffile/");
  • 虚拟路径: /pdffile/**
  • 物理路径: src/main/resources/pdffile/
  • 实际位置: JAR包内的资源文件

6.2 图片资源

配置文件: WebAppConfig.java 第80-82行

registry.addResourceHandler("/images/**")
        .addResourceLocations("classpath:/images/");
  • 虚拟路径: /images/**
  • 物理路径: src/main/webapp/images/
  • 实际位置: Web应用目录下的静态资源

6.3 模板资源

配置文件: WebAppConfig.java 第83-85行

registry.addResourceHandler("/template/**")
        .addResourceLocations("classpath:/template/");
  • 虚拟路径: /template/**
  • 物理路径: src/main/resources/templates/
  • 实际位置: JAR包内的模板资源

7. Swagger API文档资源映射

配置文件: SwaggerConfig.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行

registry.addInterceptor(tokenInterceptor)
        .addPathPatterns("/**")
        .excludePathPatterns("/upload/**", "/images/**", "/temp/**", "/unzip/**", "/report/**", "/pdffile/**", "/template/**");
  • 所有静态资源路径都被排除在Token拦截之外
  • 确保静态资源可以直接访问,无需身份验证

CORS跨域配置

跨域设置

配置文件: WebAppConfig.java 第34-42行

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. 性能优化

  • 静态资源映射支持浏览器缓存
  • 排除拦截器减少性能开销
  • 合理设置跨域缓存时间

总结

该项目的静态资源配置完善,支持多种类型文件的访问,包括上传文件、临时文件、报表文件等。通过统一的管理方式,确保了文件的安全访问和性能优化。