【问题标题】:How to set application context while creating a war file?创建war文件时如何设置应用程序上下文?
【发布时间】:2023-03-07 09:02:03
【问题描述】:

我一直在开发一个 Web 应用程序(Java+Spring+Maven+HTML+CSS+js+JSP),现在我正在尝试将它部署到 tomcat。 (我使用 IntelliJ 作为 IDE)

我在代码中有很多相对路径,例如,

<script type="text/javascript" src="./static/external/jquery-2.1.0.js">

$.ajax({ dataType: "html", url : "/yarimelma/deleteConversation",

当我使用 tomcat 在本地测试时,所有这些路径工作正常。我将 "Application Context" 设置为默认的 "/" 所以没问题。

当我将 WAR 部署到远程服务器到 Tomcat 时,问题就开始了。 WAR 文件名为 yarimelma-1.0.0.war,因此它在 tomcat 下创建一个上下文,即 /yarimelma-1.0.0 并提供服务我在那个背景下的申请。 (https://[mydomain]/yarimelma-1.0.0)

在这种情况下会发生什么,我的代码中的所有这些路径都无法访问,因为它试图找到 js,例如,在 https://{mydomain}/static/js/ 下jquery.js 但实际上可以在 https://{mydomain}/yarimelam-1.0.0/static/js/jquery.js 下访问,因为它已经部署了上下文。 由于这个原因,我的 ajax 调用也不起作用,因为客户端试图对 https://[mydomain]/yarimelma/connect 执行 ajax 调用,但它实际上应该转到 https://[mydomain]/yarimelma-1.0.0/yarimelma/connect

对解决方案有什么想法吗?

1-我应该在我的 spring 配置或战争导出设置中的某处将我的应用程序上下文设置为 /yarimelma-1.0.0 吗? 2-这个问题的解决方案是什么?

谢谢

【问题讨论】:

    标签: java spring spring-mvc deployment tomcat8


    【解决方案1】:

    我有一个类似结构的项目。

    在我的配置文件中:

    <resources mapping="/resources/**" location="/resources/" />
    

    这通过有效地提供 ${webappRoot}/resources 目录中的静态资源来处理对 /resources/** 的 HTTP GET 请求。

    现在在我的 JSP 中,我使用 scriptlet 来获取资源路径,例如:

    <link href="<%=request.getContextPath()%>/resources/css/error.css" rel="stylesheet" type="text/css" />
    

    使用 request.getContextPath() 您可以获得应用程序的上下文(在您的情况下,是部署应用程序时服务器中应用程序的上下文)

    【讨论】:

      【解决方案2】:

      你可以使用 JSTL core taglib,我相信这是最常用的方法。

      只需将其包含在您的 jsp 中即可:

      <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      

      并使用它:

      <script type="text/javascript" src="<c:url value="/static/external/jquery-2.1.0.js"/>"></script>
      

      它会自动处理你的上下文路径。

      另一种选择是按照@canillas 的建议手动将上下文路径附加到您的网址,但我建议不要使用脚本,而是使用${pageContext.request.contextPath}

      所以您的网址可能如下所示:

      <script type="text/javascript" src="${pageContext.request.contextPath}/static/external/jquery-2.1.0.js">
      

      【讨论】:

        猜你喜欢
        • 2015-01-17
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 2017-09-05
        • 2017-03-09
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        相关资源
        最近更新 更多