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

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

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

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

  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/>

你可能感兴趣的:(springmvc项目中实现静态文件映射任意位置)