当前位置: 首页 > 知识库问答 >
问题:

Spring boot WAR已部署到Tomcat,但静态资源缺少上下文

孟成文
2023-03-14

应为:http://localhost:8080/spring-boot-war-context-issue/app/images/springboot.png

图像显示问题

它在使用嵌入式Tomcat时工作良好

然而,该问题中的建议似乎并没有解决我的问题。我不确定Tomcat xml文件。

我创建了一个简单的示例应用程序,并遵循了Spring Boot文档中的步骤。

在这个github repo中可以看到示例代码以及再现问题的步骤:https://github.com/jgraham0325/spring-boot-war-context-issue

  • 在application.properties中设置contextPath,但这仅适用于嵌入式Tomcat
  • 尝试使用Tomcat 7的新安装
  • 尝试在tomcat中创建配置文件以强制上下文:apache-tomcat-7.0.72\conf\catalina\localhost\spring-boot-war-context-issule.xml

spring-boot-war-context-issule.xml的内容:

    <Context 
    docBase="spring-boot-war-context-issue" 
    path="spring-boot-war-context-issue" 
    reloadable="true" 
    />

任何建议都将非常感谢!

共有1个答案

徐奇逸
2023-03-14

这难道不是您在index.html中定义url的方式造成的吗(url不包括上下文根):

<img src="/app/images/springboot.png" />

您应该能够使用相对uri(没有前导斜杠):

<img src="app/images/springboot.png" />

>

  • 如何从JavaScript获取contextPath(正确的方法)?

    如何在不包含上下文根名的情况下使用相对路径?

    使用JSP/JSTL:

    <img src="${pageContext.request.contextPath}/app/images/springboot.png" />
    

    或使用JavaScript:

    function getContextPath() {
       return window.location.pathname.substring(0,  window.location.pathname.indexOf("/",2));
    }
    ...
    var img = new Image();
    img.src = getContextPath() + "/app/images/springboot.png";
    document.getElementById('div').appendChild(img);
    

  •  类似资料:
    • 我有一个SpringMVC 4。在应用程序上下文XML文件中定义了多个静态资源的x应用程序,如下所示: 这些文件分别存储在“/webapp/static/”目录和“/resources/static/”目录中(请参见映射,分别为和。在“js”和“css”子目录中有一些文件可以访问,但我最近添加的文件在尝试通过Netbeans控制的本地Tomcat服务器访问时返回404个错误。 我尝试了对sprin

    • 问题内容: 我正在开发一个Spring Boot应用程序。我需要在开始时解析XML文件(countries.xml)。问题是我不知道将其放在哪里才能访问它。我的文件夹结构是 我的第一个想法是将其放在src / main / resources中,但是当我尝试创建File(countries.xml)时,我得到了NPE,并且stacktrace显示我的文件在ProjectDirectory中查找(因

    • 更新:只是为了将来的参考-在构建项目之后,我遇到了访问文件的问题,所以我将文件更改为InputStream

    • 问题内容: 在Web应用程序中,我需要提供位于应用程序上下文目录外部的静态内容(图像)。整个应用程序体系结构要求我使用Tomcat来执行此操作。我以为可以从Spring的应用程序URL和目录内容之间配置映射而受益。但是AFAIK的属性仅处理上下文相关或类路径映射。因此,我想使用的是: 不起作用。因为我宁愿避免编写简单的文件传输servlet,所以如果有人可以给我一些有关基于Spring的现有解决方

    • 每个网站都需要静态资源:图片、样式表、网站图标(favicon)等。在这种情况下,您可以在项目的根目录下创建一个名为 static 的目录。 放入 该目录中的每个文件都将被复制到 生成的 build 文件夹中,并保留目录的层级结构。例如,如果您将名为 sun.jpg 的文件添加到 static 文件夹中,则该文件将被复制到 build/sun.jpg 路径。 这意味着: 对于 baseUrl: '

    • 我最近开始在我所有的项目中遇到这个问题。当我的索引页加载其中包含对jQuery源文件的引用时,我的控制台记录这个错误:。 这完全不影响我的应用程序,但是每当我打开控制台时,看到它真的很烦人。有人知道这是从哪里来的吗? 编辑:注意,我没有显式引用.map文件,我只是指向