Spring MVC上下文路径设置在哪里?

tes*_*est 6 java spring tomcat maven

我不确定如何设置上下文路径.当我.war file在tomcat中重命名时autodeploy,网页会localhost:8080/newDirectory按预期进行,但出于某种原因,无论pageContext.request.contextPath在基于Spring的页面中有什么调用,它仍会返回旧的上下文路径.

我试图通过设置覆盖上下文路径:

<context path="/newDirectory" docBase="appName" override="true"></context>
Run Code Online (Sandbox Code Playgroud)

server.xml但它不起作用.

我的问题是,Spring从哪里读取它的上下文路径?我用了Maven,我确实看到了

<appContext>/${project.artifactId}</appContext>
Run Code Online (Sandbox Code Playgroud)

pom.xml,这是否意味着我需要将artifactId重命名为newDirectory?

我也试过添加它<context path="/newDirectory"...> in /META-INF/context.xml(现在我知道由于我的server.xml改变,无论如何都会被忽略).

提前感谢您的回答.

Sun*_*mar 0

每个 PageRequest 将获取当前 HttpServletRequest 对象并获取当前请求的上下文路径并附加您的 .jsp (即使在更改时访问此资源的上下文路径也将起作用)。

例如,

如果您有一个名为 MyCompany.war 的 war 文件,并且有一个带有 ${pageContext.request.contextPath}/MyJspPage.jsp 的页面。

Then your context path is http://abc/MyCompany and it works as http://abc/MyCompany/MyJspPage.jsp.
Run Code Online (Sandbox Code Playgroud)

假设如果您将 war 文件更改为 OurCompany.war,

then your context path changes to http://abc/OurCompany and Jsp will work as http://abc/OurCompany/MyJspPage.jsp.
Run Code Online (Sandbox Code Playgroud)

这意味着上下文路径将自动更改为应用程序的名称(War 文件名),无需任何更改。

在您的情况下,用 newDirectory 重命名 war 文件名后,您的 Web 服务器将部署 newDirectory 应用程序,但 Web 服务器中仍然存在 newDirectory 应用程序。我认为您应该从 webapp 中删除旧应用程序,然后通过重新加载 newDirectory 应用程序进行检查。