在 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 类以在面板中放置图像