4

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

例如,所有 Sun 示例都使用单个/catalog或类似的东西作为上下文根,但它也可以/catalog/furniture吗?

Servlet 2.4 规范在这里没有具体说明。

上下文路径:与ServletContextservlet 所属的路径前缀。如果此上下文是基于 Web 服务器 URL 名称空间的“默认”上下文,则此路径将是一个空字符串。否则,如果上下文不以服务器名称空间的根为根,则路径以“/”字符开头,但不以“/”字符结尾。

4

4 回答 4

2

我们不能给一个 servlet 提供多个上下文根。但是我们可以在server.xmlas中用不同的名字动态改变

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

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

默认情况下,如果您使用请求对象调用 contextPath,因为req.getContextPath();默认情况下它将使用 slash(/) as 获取/myproj

有关将上下文根从静态更改为动态的更多信息,您可以在此处查看

于 2012-02-14T13:36:58.953 回答
1

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

于 2009-11-28T18:45:44.943 回答
0

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

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

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

您能更清楚地了解您的想法吗?我认为你想要完成的有点令人困惑。

于 2009-11-28T18:50:54.523 回答
-1

不可以。上下文根路径中不能有斜线。

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

于 2009-11-28T20:45:05.683 回答