如何在Spring MVC中投放静态内容?


问题内容

我在当前项目中使用spring-mvc框架。ROOT文件夹有很多包含html,jsp,css,js等的网络文件夹。我的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属性适用于静态内容,但是需要我的静态内容出现在特定的文件夹(例如resouce文件夹)中。因此,这种方法对我没有用。


问题答案:

假设您有一个(/resources/my_images/)包含一些产品图片的目录,并且您想根据要求提供这些图片。例如,如果请求的URL是http://localhost:8080/ mystore/resource/my_images/P123.png,则您希望使用P123.png名称来提供图片。同样,如果请求的URL为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中的图像名称

仅供参考:<mvc:resources>在Web应用程序上下文配置中标记,以告知Spring这些图像文件在我们项目中的位置,以便Spring可以根据请求提供这些文件。