Java 如何使用Spring获得应用程序根目录的绝对路径?

Java 如何使用Spring获得应用程序根目录的绝对路径?,java,spring,jsp,spring-mvc,jstl,Java,Spring,Jsp,Spring Mvc,Jstl,我有一个应用程序可以在或运行。我有一个带有搜索表单的共享标题,需要转到installationName/search 但是,如果我使用,它将转到服务器的根目录,而不是tomcat应用程序 如果我使用,它将转到相对于当前页面的路径。(即 我试过和,但它们似乎都不起作用 在intelliJ中,给了我“无法解析控制器URL/search”,即使我有一个用@RequestMapping(“/search”)定义的控制器。 使用是一种方法。忽略IDE告诉您的内容。他们不擅长于此。试着运行它。Bozho是

我有一个应用程序可以在或运行。我有一个带有搜索表单的共享标题,需要转到installationName/search

但是,如果我使用
,它将转到服务器的根目录,而不是tomcat应用程序

如果我使用
,它将转到相对于当前页面的路径。(即

我试过
,但它们似乎都不起作用

在intelliJ中,
给了我“无法解析控制器URL/search”,即使我有一个用@RequestMapping(“/search”)定义的控制器。



使用
是一种方法。忽略IDE告诉您的内容。他们不擅长于此。试着运行它。

Bozho是正确的。我也使用了HTML基本标记:

<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/" />

如果您可以将此标记放在几个地方(理想情况下只放在一个JSP中),您就可以使代码更干净。

您还可以(除了其他响应器提示)使用Spring JSP标记(Spring:url),它是根据JSTL c:url标记建模的(请参见Bozhos回复)。tld参考:

此mvc的底部:资源块用于示例用途:


如果表单标记是jsp标记(可能,),则无法将c:url标记直接嵌入属性中

在这种情况下,我会采取以下措施:

<c:url var="someName" value="some uri value"/>
<sf:form path="${someName}" ...>


您是如何准备您的搜索URL的?您是直接手工在href属性中编写的吗?您的href是什么?您是否使用任何标记库?您是否将spring mvc与jsp或任何其他视图框架结合使用?抱歉,显然我没有表示thmnl,因此它需要渲染:/my bad。这仍然不起作用,我将它与dwbs answe结合起来,然后查看我想问题的一部分在于IntelliJ Idea是在/启动我的应用程序的,但它仍然位于/m/,因此应用程序上下文是/。虽然应用程序确实在/m/运行,但我不知道为什么会发生这种情况。完整的url是localhost:8080/m/,这意味着上下文路径是
/m
。这反过来意味着你的无论何时使用
<c:url var="someName" value="some uri value"/>
<sf:form path="${someName}" ...>