如何在spring mvc中提供静态内容?

时间:2016-07-28 11:52:16

标签: java spring spring-mvc static

我在当前项目中使用spring-mvc框架。 ROOT文件夹有很多包含html,jsp,css,js等的web文件夹。我的spring mvc配置如下:

<context:annotation-config />

    <bean id="comicControllerBean" class="tv.cinemacraft.videogramwebapp.springmvc.controllers.ComicController" />
    <bean id="dashboardControllerBean" class="tv.cinemacraft.videogramwebapp.springmvc.controllers.DashBoardController" />
    <bean id="genericControllerBean" class="tv.cinemacraft.videogramwebapp.springmvc.controllers.GenericController" />
    <bean id="channelControllerBean" class="tv.cinemacraft.videogramwebapp.springmvc.controllers.ChannelController" />

    <!-- <context:component-scan base-package="tv.cinemacraft.videogramwebapp.springmvc.controllers" /> -->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/" />
        <property name="suffix" value=".jsp" />
        <property name="order" value="1" />
    </bean>

    <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
        <property name="basename" value="views" />
        <property name="order" value="0" />
    </bean>

我在java控制器中定义了映射。但这会导致像任何图像一样的静态内容消失。如果我通过访问ROOT //。jpg请求任何文件夹中的任何图像,它会给我404响应代码,尽管图像存在。 如果我删除spring-mvc,则会显示图像。

请注意,spring-mvc的resources属性适用于静态内容,但需要我的静态内容存在于特定文件夹中,例如资源文件夹。所以这种方法对我没用。

1 个答案:

答案 0 :(得分:1)

假设您有一个目录(/resources/my_images/),其中包含一些产品图片,并且您希望根据要求提供这些图片。例如,如果请求的网址为http://localhost:8080/ mystore/resource/my_images/P123.png,那么您希望使用P123.png名称提供图片。同样,如果请求的网址为http://localhost:8080/mystore/resource/images/P1234.png,则需要提供名称为P1234.png的图片。

现在如何使用Spring MVC提供静态图像?

  1. 将一些图片放在src/main/webapp/resources/my_images/目录下;
  2. 在我们的Web应用程序上下文配置中添加以下标记 DispatcherServlet-context.xml档案:<mvc:resources location="/resources/" mapping="/resource/**"/>
  3. 运行您的应用程序并输入 http://localhost:8080/mystore/resource/images/P123.png(改变 基于您放置的图像的URL中的图像名称
  4. FYI:Web应用程序上下文配置中的<mvc:resources>标记告诉Spring这些图像文件在我们的项目中的位置,以便spring可以根据请求提供这些文件。