springmvc项目中实现静态文件映射任意位置

在SpringMVC项目中,为了实现静态文件(如图片)从任意位置映射访问,通常需要配置web.xml以确保DispatcherServlet拦截所有请求,并在Spring配置文件中设置静态资源处理。这样,可以通过mvc:resource标签映射本地文件系统中的文件,例如将D盘的filesdir文件夹映射到/files/路径下,使得可以访问localhost:8080/files/img.jpg。但此配置可能与Controller注解冲突,需进一步调整Spring配置来解决这个问题。

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

项目发布后一般图片都是存储在文件服务器中的。或者再做开发的时候我们是将上传的图片存储在电脑中某个文件夹,项目启动后直接访问的话只能使用file://这种方式访问,当然不靠谱。所以我们使用到了springmvc中的mvc:resource标签
首先需要修改一下web.xml文件。保证DispatcherServlet的拦截路径是/

<servlet>
    <servlet-name>ysmall</servlet-name>
    <servlet-class>
      org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>ysmall</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

这样项目中的所有链接都会通过这个servlet访问,但是当我们修改了这里后,静态文件是无法访问到的。我们需要到spring的配置文件中添加如下,使静态文件使用默认的servlet进行访问。

  <mvc:default-servlet-handler/>

然后我们加入想要添加的静态文件映射内容,比如我想使用localhost:8080/files/img.jpg访问我电脑中d盘filesdir文件夹下的img.jpg文件,那么使用如下配置。

  <mvc:resources mapping="/files/**" location="file:///D:/filesdir/" />

现在又有一个问题,加入如上内容后,如果controller使用的注解,那么就会出现无法访问,需要再spring配置文件中加入

  <mvc:annotation-driven/>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值