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

时间:2010-11-12 21:39:04

标签: spring-mvc

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

在我的Home.jsp页面中,未呈现的图像被引用如下:

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

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

7 个答案:

答案 0 :(得分:36)

更改您的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>

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

对于Spring MVC框架中jsp文件中的set image:

您可以按照以下步骤设置图片:

步骤1.将图像文件夹放在资源中

步骤2.写图像路径如:         SRC = “$ {pageContext.request.contextPath} /resources/images/logo.jpg”

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我认为您可以将所有静态数据(如image,css,javascripts等)放在WEB-INF旁边,然后以正常方式调用它:)

答案 6 :(得分:0)

有点旧,但让我在这里补充一点。 通常首选将.css / .js文件隐藏在主/ java / webapp文件夹而不是WEB-INF中,以免直接公共访问。

原因在下面的帖子中得到了很好的解释: