我无法弄清楚getServletContext.getContextPath()
和request.getContextPath()
将返回不同字符串的情况。
HttpServletRequest.getContextpath() javadoc:
Servlet容器可能与上下文匹配更多
一个上下文路径。在这种情况下,此方法将返回
请求使用的实际上下文路径,它可能与
ServletContext.getContextPath()方法返回的路径。的
ServletContext.getContextPath()返回的上下文路径应为
被视为应用程序的主要或首选上下文路径。
ServletContext.getContextPath() javadoc:
Servlet容器可能通过多个上下文路径匹配上下文。在这种情况下
HttpServletRequest.getContextPath()将返回实际上下文
请求所使用的路径,它可能与所返回的路径不同
这种方法。此方法返回的上下文路径应为
被视为应用程序的主要或首选上下文路径。
当我的应用程序位于Tomcat的webapps/ROOT
文件夹中时,两个方法都返回“”(空字符串)。
在所有其他情况下,如果我的应用程序位于myapp.war中(放入Tomcat的webapps文件夹中),则这两种方法均按预期返回“ / myapp”。
当我将my.war
和mymy.war
放入Tomcat的webapps文件夹时,Tomcat会看到两个不同的Web应用程序,因此我无法对此“ servlet容器可能通过多个上下文路径匹配上下文”的情况进行建模。
我无法将我的WAR称为my.war
和my/my.war
,因为Windows和Unix上的文件名均不允许使用“ /”。
最佳答案
支持这是因为it's pretty straightforward to have multiple context paths mapped to the same webapp。
以下是实现同一目标的其他方法:
Tomcat: two context paths for one webapp
adding a global URI prefix for Tomcat web apps