Java 如何在创建war文件时设置应用程序上下文?

Java 如何在创建war文件时设置应用程序上下文?,java,spring,spring-mvc,deployment,tomcat8,Java,Spring,Spring Mvc,Deployment,Tomcat8,我一直在开发一个web应用程序(Java+Spring+Maven+HTML+CSS+js+JSP),现在我正试图将其部署到tomcat。(我使用IntelliJ作为IDE) 我在代码中有很多相对路径,比如 或 $.ajax({ 数据类型:“html”, url:“/yarimelma/deleteConversation”, 当我用tomcat在本地测试时,所有这些路径都可以正常工作。我将“应用程序上下文”设置为默认值“/”,所以没有问题 当我将WAR部署到Tomcat中的远程服务器时,问题

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

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

$.ajax({
数据类型:“html”,
url:“/yarimelma/deleteConversation”,

当我用tomcat在本地测试时,所有这些路径都可以正常工作。我将“应用程序上下文”设置为默认值“/”,所以没有问题

当我将WAR部署到Tomcat中的远程服务器时,问题就开始了。WAR文件名为yarimelma-1.0.0。WAR,因此它在Tomcat下创建了一个上下文,该上下文为/yarimelma-1.0.0,并从该上下文为我的应用程序服务。

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

你对解决方案有什么想法

1-我是否应该将spring配置或war导出设置中的某个应用程序上下文设置为/yarimelma-1.0.0? 2-解决方案是什么


谢谢

我有一个类似结构的项目

在我的配置文件中,我有:

<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()可以获取应用程序的上下文(在您的情况下,部署应用程序时服务器中应用程序的上下文)

我有一个类似结构的项目

在我的配置文件中,我有:

<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()可以获取应用程序的上下文(在您的情况下,部署应用程序时服务器中应用程序的上下文)

您可以使用JSTL核心标记库,我相信这是最常见的方法

只需将其包含在jsp中:

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

您可以使用JSTL核心标记库来实现这一点,我相信这是最常见的方法

只需将其包含在jsp中:

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