【问题标题】:Where is Spring MVC context path set?Spring MVC 上下文路径设置在哪里?
【发布时间】:2015-09-19 16:21:24
【问题描述】:

我不确定上下文路径是如何设置的。 当我在 autodeploy 上的 tomcat 中重命名我的 .war file 时,网页按预期转到 localhost:8080/newDirectory,但是由于某种原因,在基于 Spring 的页面中调用 pageContext.request.contextPath 时,它仍然返回旧的上下文路径.

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

<context path="/newDirectory" docBase="appName" override="true"></context>

server.xml,但它不起作用。

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

<appContext>/${project.artifactId}</appContext>

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

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

提前感谢您的回答。

【问题讨论】:

  • 对我来说,只需将 oldWebApp.war 更改为 newWebApp.war 即可

标签: java spring maven tomcat


【解决方案1】:

每个 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 文件名后,您的网络服务器将部署 newDirectory 应用程序,但网络服务器中仍然存在新的Directory 应用程序。我认为您应该从 webapp 中删除旧应用程序,然后通过重新加载您的 newDirectory 应用程序来检查。

【讨论】:

    【解决方案2】:

    它不依赖于 Spring,也许您正在使用 maven 插件来构建读取 appContext 属性的战争。您可以在this 线程中阅读有关定义 ServletContext 的信息。

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 2017-02-23
      • 1970-01-01
      • 2010-12-09
      • 2016-11-15
      • 1970-01-01
      相关资源
      最近更新 更多