Java servlet上下文根

时间:2009-11-28 18:41:41

标签: java java-ee contextpath

是否可以将多个条目作为servlet的上下文根?

例如,所有Sun示例都使用单个/catalog或与上下文根相似的内容,但也可以是/catalog/furniture吗?

此处Servlet 2.4 Specification并不具体。

  

上下文路径:与此servlet所属的ServletContext关联的路径前缀。如果此上下文是“默认”   以Web服务器的URL名称空间为基础的上下文   path将是一个空字符串。否则,如果上下文没有root   在服务器名称空间的根目录下,路径以'/'开头   字符,但不以'/'字符结尾。

4 个答案:

答案 0 :(得分:2)

我们无法为servlet提供多个上下文根。但我们可以使用server.xml中的不同名称动态更改为

<web-uri>Project.war</web-uri>
<context-root>myproj</context-root>

我们可以使用不同的名称配置项目上下文根,但它应该是一个名称。

默认情况下,如果使用请求对象req.getContextPath();调用contextPath,默认情况下将使用斜杠(/)作为/myproj

有关将上下文根更改为静态到动态的更多信息,您可以check here

答案 1 :(得分:1)

是。这只是一个前缀。它必须以“/”开头,并且不能以“/”结尾,除非它是“/”。允许使用内部斜线。

答案 2 :(得分:0)

  

E.g。所有Sun示例都使用单个“/ catalog”或类似的上下文根,但它可以   “/ catalog / furniture”也是?

在您的web.xml中,您是否建议将“catalog / ”和“catalog / furniture / ”映射到同一个servlet?重点是什么?我认为servlet引擎会将这两个请求路由到同一个servlet。

如果您建议您有两个WAR文件,一个名为catalog.war,另一个名为其他名称,并且都需要将所有请求路由到同一个servlet,您必须拥有.class两个WAR文件中该servlet的文件,或者必须写入其他上下文的根servlet,因此它将所有请求重定向到catalog.war根servlet。

关于你究竟想到什么,你能更明确一点吗?我认为你想要完成的事情有点令人困惑。

答案 3 :(得分:-1)

没有。你不能在上下文根路径中使用斜杠。

但是,您可以使用上下文根“/ catalog”实现相同的效果。只需将所有静态和JSP文件放在WAR中的“/ furniture”下,并相应地添加Servlet映射。