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