我使用Netbeans创建了一个Spring MVC 3.0应用程序。我有一个简单的控制器和JSP视图。除了不呈现的图像之外,JSP视图正确显示。我的目录结构如下所示:
在我的Home.jsp页面中,未呈现的图像被引用如下:
<img src="Images/face.png" />
我已经确认face.png位于Images目录中。那么为什么它不会出现在浏览器中呢?在Spring MVC中,我应该在哪里放置JSP视图引用的文件,如图像,CSS,JS等?
答案 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中,以免直接公共访问。
原因在下面的帖子中得到了很好的解释: