在 spring-mvc 应用程序中放置图像/CSS 的位置?

Posted

技术标签:

【中文标题】在 spring-mvc 应用程序中放置图像/CSS 的位置?【英文标题】:Where to place images/CSS in spring-mvc app? 【发布时间】: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 等)放在哪里?

【问题讨论】:

【参考方案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 文件夹中,以防止直接公共访问。

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

What is WEB-INF used for in a Java web application? How to access css/js files in jsps, all of them are placed in 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才能访问图片? 看到这个问题:***.com/questions/553749/…。可能会有所帮助。 不,这让我更加困惑。 :) 我正在尝试做的事情应该很容易,无需诉诸主题。也许我的 URL 模式会阻止对控制器以外的任何东西的访问?

以上是关于在 spring-mvc 应用程序中放置图像/CSS 的位置?的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual C# 中获取 Components 类以在面板中放置图像

在 WKInterfaceTable 行中放置一个图像和两个标签

如何从 JFileChooser 中放置图像?

如何在包含系统图像的背景按钮中放置渐变?

在 SwiftUI 的按钮中放置背景图像和文本/图标?

在 iOS LaunchScreen.storyboard 中放置图像会完全禁用启动屏幕