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

时间:2015-07-02 08:34:30

标签: java spring maven tomcat

我不确定如何设置上下文路径。 当我在.war file上的tomcat中重命名autodeploy时,网页会按预期转到localhost:8080/newDirectory,但出于某种原因,无论何时在pageContext.request.contextPath呼叫<context path="/newDirectory" docBase="appName" override="true"></context> 基于Spring的页面,它仍然返回旧的上下文路径。

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

server.xml
<{1>}中的

但它不起作用。

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

<appContext>/${project.artifactId}</appContext>
pom.xml中的

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

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

提前感谢您的回答。

2 个答案:

答案 0 :(得分:0)

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

例如,

如果您将war文件作为MyCompany.war并且页面包含$ {pageContext.request.contextPath} /MyJspPage.jsp。

Then your context path is http://abc/MyCompany and it works as http://abc/MyCompany/MyJspPage.jsp.

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

then your context path changes to http://abc/OurCompany and Jsp will work as http://abc/OurCompany/MyJspPage.jsp.

这意味着上下文路径将自动更改为应用程序名称(战争文件名称)而不进行任何更改。

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

答案 1 :(得分:0)

这不依赖于Spring,也许您正在使用Maven插件来构建读取appContext属性的战争。您可以在this线程中了解有关definig ServletContext的信息。