【问题标题】:Java Web Application. Problems in locating imagesJava 网络应用程序。定位图像的问题
【发布时间】:2015-12-24 05:20:42
【问题描述】:

我正在制作一个 java web 应用程序,我希望它显示图像。但是,它找不到我的图像。

我在/src/main/resources/images创建了一个文件夹

另外,在.jsp 文件中,我尝试了以下句子。

 <img src="/src/main/resources/images/Head.png"> </img>

 <img src="< c:url value='/src/main/resources/images/Head.png'/>"> </img>

我有什么不好的事情吗?

谢谢

编辑:

mi.jsp文件的路径是/src/main/webapp/WEB-INF/jsp/welcome.jsp

你可以在https://github.com/Santi-7/hello找到网页应用代码

【问题讨论】:

  • .jsp 文件的路径添加到您的问题中
  • 您能否提供您的网络应用程序的代码或指向您的网络应用程序代码所在的公共存储库的链接?
  • 路径是/src/main/webapp/WEB-INF/jsp/welcome.jsp
  • 当然,网页应用代码在github.com/Santi-7/hello

标签: java html image web


【解决方案1】:

谢谢大家,我可以解决我的问题。

我所做的更改:

因此,为了添加浏览器可访问的资源,您需要将其放入 /src/main/webapp - 这将成为应用程序的根目录。

现在,我的图片在/src/main/webapp/images

图像的路径必须相对于 .jsp 文件的路径。

现在,我的.jsp文件的句子是

&lt;img src="images/Head.png" /&gt;

编辑[1]:

¡ 我弄错了。图片的路径是相对于 /webapp 类路径的!

【讨论】:

  • 在你的问题中,你写的图片路径是:/src/main/resources/images。我不知道您是在此处还是在您的问题中犯了错误,但您需要解决这个问题。
  • 一开始我有那个路径,但正如蜘蛛鲍里斯建议的那样,我把这个路径改为 /src/main/webapp/images
【解决方案2】:

您的应用是Spring Boot app。我认为您也可以尝试使用 Spring Boot 提供的工具来提供静态内容。无论如何,您现在正在这样做,因为您将 webjars 用于 css 和 js 库!!!与您使用的技术保持一致。

【讨论】:

【解决方案3】:

图像的路径必须相对于 .jsp 文件的路径。

因为你的图片的路径是:/src/main/resources/images/Head.png,而你的jsp文件的路径是:/src/main/webapp/WEB-INF/jsp/welcome.jsp,所以你的图片标签里需要写:

<img src="../../../resources/images/Head.png" />

../../../是从jsp文件夹出来到main文件夹,resources/images/Head.png是从main文件夹到图片的路径。

【讨论】:

  • 谢谢,正如你所说,我不得不使用 .jsp 文件路径的相对路径。
  • 我完全不推荐这个。它不仅脆弱,而且很可能不起作用。
【解决方案4】:

.war文件的结构如下:

/
    /WEB-INF
        /lib
        /classes
    /META-INF

现在,您的应用程序具有以下结构(我假设,给定文件夹结构,您使用的是 Maven)

/
    /src
        /main
            /java
            /resources
            /webapp

现在,Maven 战争插件将在编译期间将类路径中的所有内容复制到 /WEB-INF/classes - 默认情况下为 /src/main/java/src/main/resources

问题的关键在于 /WEB-INF/META-INF 下的任何内容都无法通过请求访问 - 这是出于安全考虑,否则例如有人可以简单地下载 /WEB-INF/web.xml。 p>

因此,为了添加浏览器可访问的资源,您需要将其放入/src/main/webapp - 这将成为应用程序的根。

因此,如果您将 Head.png 放入 /src/main/webapp/images 中,那么您将在 JSP 中使用:

<c:url value='/images/Head.png'/>

简而言之,您需要了解.war 的目录结构如何工作以及它与您的代码有何关系。

【讨论】:

  • 成功了!但我不得不使用
  • @SantiGil 除非您将应用程序部署为 ROOT,否则我不会这样做 - 否则您的应用程序将位于 context,因此完整 URL 将是 /context/images/Head.png,您的应用程序将不再工作。这就是 c:url 存在的原因 - 自动添加到上下文中。
猜你喜欢
  • 2015-12-24
  • 2010-12-06
  • 2013-05-25
  • 2020-09-11
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
相关资源
最近更新 更多