【问题标题】:Where to place images/CSS in spring-mvc app?在 spring-mvc 应用程序中放置图像/CSS 的位置?
【发布时间】:2011-05-09 07:54:24
【问题描述】:

我使用 Netbeans 创建了一个 Spring MVC 3.0 应用程序。我有一个简单的控制器和 JSP 视图。 JSP 视图显示正确,但图像未呈现。我的目录结构如下所示:

在我的 Home.jsp 页面中,未呈现的图像是这样引用的:

<img src="Images/face.png" />

我已确认 face.png 位于 Images 目录中。那么为什么它没有出现在浏览器中呢?在 Spring MVC 中,我应该将 JSP 视图引用的文件(如图像、CSS、JS 等)放在哪里?

【问题讨论】:

    标签: spring-mvc


    【解决方案1】:

    修改你的 web.xml 文件:

    <servlet>
        <servlet-name>spring-servlet</servlet-name>
        <servlet-class>com.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring-servlet</servlet-name>
        <url-pattern>/<url-pattern>
    </servlet-mapping>
    

    并在其后添加以下配置:

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>
    

    如果您有更好的解决方案,请与我分享。

    【讨论】:

    • @RaviKhakhkhar 如果它对你有用,你能接受这个答案吗?
    • @Drahakar:我还没有问过这个问题。所以我自然无权接受这个答案。我已经投票了。
    • 这一步对我不起作用。如Nada Lu 所述,我将图像文件夹移到了 WEB-INF 之外
    • 我有这个问题...一切正常,但是当我们使用引导程序时,引导程序使用的所有图像都没有加载
    【解决方案2】:

    有点旧,但让我在这里补充一点。 通常,最好将 .css/ .js 文件放置在 main/java/webapp 文件夹而不是 WEB-INF 文件夹中,以防止直接公共访问。

    原因在下面的帖子中有很好的解释:

    【讨论】:

      【解决方案3】:

      我认为您可以将所有静态数据(例如图像、css、javascripts 等)放在 WEB-INF 之外,然后以正常方式调用它:)

      【讨论】:

        【解决方案4】:

        在Spring MVC框架的jsp文件中设置图片:

        您可以通过以下步骤简单地设置您的图像:

        步骤 1. 将图片文件夹放入资源中

        步骤 2. 编写图像路径,如: src="${pageContext.request.contextPath}/resources/images/logo.jpg"

        【讨论】:

          【解决方案5】:

          Web-Inf 文件夹下的任何内容都将被标记为私有,浏览器无法访问。您假设将图像文件夹移到 Web-Inf 之外和 webapp 下。

          【讨论】:

            【解决方案6】:

            我在这里找到了一个可行的答案: How to handle static content in Spring MVC?

            问题是我的 spring mvc dispatcher servlet 正在拦截对静态资源的调用。所以我映射了 Tomcat 的默认 servlet 来处理静态资源。

            【讨论】:

              【解决方案7】:

              我相信它只能引用WEB-INF文件夹中的images/css。将您的 Images 文件夹移动到 WEB-INF 应该可以解决您的问题。

              【讨论】:

              • 那行不通。即使尝试直接访问图像 (localhost:8080/myapp/Images/face.png) 也不起作用。是否需要配置spring mvc才能访问图片?
              • 看到这个问题:stackoverflow.com/questions/553749/…。可能会有所帮助。
              • 不,这让我更加困惑。 :) 我正在尝试做的事情应该很容易,无需诉诸主题。也许我的 URL 模式会阻止对控制器以外的任何东西的访问?
              猜你喜欢
              • 2016-02-18
              • 2011-03-08
              • 2017-06-20
              • 1970-01-01
              • 2013-09-27
              • 2011-06-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多