配置本地资源映射路径 addResourceHandlers

本文介绍了如何在Spring MVC中通过实现WebMvcConfigurer接口,配置addResourceHandlers来映射本地资源路径,以实现静态文件的访问。关键在于addResourceLocations添加的真实路径末尾必须加上'/',否则将无法正确映射。作者通过举例展示了具体的配置代码,并分享了解决此问题的经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置本地资源映射路径 addResourceHandlers

实现 WebMvcConfigurer,重写addResourceHandlers(ResourceHandlerRegistry registry)方法
addResourceHandler() 添加的是访问路径
addResourceLocations()添加的是映射后的真实路径,映射的真实路径末尾必须加 / ,不然映射不到,这个问题困扰了我半天, / 适用于 windows和linux
如下:

package cn.mindgd.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 拦截器配置
 */
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    /**
     * @author: JiaXinMa
     * @description: 访问静态文件
     * @date: 2021/4/15
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //访问路径
        registry.addResourceHandler("/api/upload/**")
                //映射真实路径
                .addResourceLocations("file:" + System.getProperty("user.dir") + "/");//必须加"/",不然映射不到  
    }
}

System.getProperty(“user.dir”) 是当前项目路径
在这里插入图片描述
成功访问如下:
在这里插入图片描述
想看更多精彩内容,可以关注我的博客园
我的博客园

### 路径映射的概念与实现方式 路径映射是指将一个虚拟路径映射到实际的物理路径,使得用户可以通过指定的虚拟路径访问对应的资源,而无需暴露真实的文件系统路径。这种方式在Web开发中非常常见,特别是在处理静态资源(如图片、文件等)时。 #### 1. **Spring MVC 中的路径映射** 在Spring MVC框架中,路径映射可以通过重写`addResourceHandlers`方法来实现。例如,当需要将前端请求的`images/**`路径映射到服务器上的某个目录时,可以按照以下方式配置[^1]: ```java @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { // 将虚拟路径"images/**"映射到实际路径"file:/home/static/images/" registry.addResourceHandler("images/**").addResourceLocations("file:/home/static/images/"); } ``` 这种方法适用于Spring MVC项目,通过定义虚拟路径和实际路径的对应关系,实现了对静态资源的安全访问。 #### 2. **Tomcat 中的路径映射** 在Tomcat中,路径映射可以通过修改`server.xml`文件中的`<Context>`标签来实现。例如,将虚拟路径`/myapp`映射到实际路径`D:\XXX\XXXX`时,可以使用以下配置[^2]: ```xml <Context path="/myapp" reloadable="false" docBase="D:\XXX\XXXX"> <Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/> </Context> ``` 此配置允许用户通过`http://localhost:8080/myapp`访问位于`D:\XXX\XXXX`的资源。 #### 3. **Spring Boot 中的路径映射** 在Spring Boot中,路径映射可以通过`application.properties`或`application.yml`文件进行配置。例如,将静态资源路径映射本地磁盘上的某个目录时,可以使用以下配置[^5]: ```properties # 静态资源路径映射 spring.resources.static-locations=file:H:\\AFile ``` 这种配置方式简单易用,适合快速开发和部署场景。 #### 4. **Transmission Remote GUI 的路径映射** 对于某些特定的应用场景(如下载工具),路径映射可以通过网络位置的方式实现。例如,在Windows系统中,可以通过添加网络位置并确保当前用户具有管理权限来完成路径映射[^3]。这种方式的核心在于确保网络路径的有效性和权限的正确性。 #### 5. **组合路径映射注解** 在Spring MVC中,还可以通过组合路径映射注解的方式实现更复杂的路径控制。例如,使用`@Controller`和`@RequestMapping`注解可以定义类级别的路径前缀,并结合方法级别的路径映射实现更细粒度的控制[^4]: ```java @Controller @RequestMapping("/user") public class HelloController { @RequestMapping(path = "/hello", method = {RequestMethod.POST}) public String sayHello() { System.out.println("Hello Spring MVC"); return "success"; } } ``` #### 路径映射的原理 路径映射的核心原理是通过中间层(如Web服务器或应用框架)拦截用户的请求,并根据预定义的规则将请求的虚拟路径转换为实际的物理路径。这种方式不仅可以隐藏真实路径,提升安全性,还可以简化资源管理。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值