我不确定如何设置上下文路径。
当我在.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
更改,现在我知道无论如何都会被忽略。)
提前感谢您的回答。
答案 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的信息。