是否可以将多个条目作为servlet的上下文根?
例如,所有Sun示例都使用单个/catalog
或与上下文根相似的内容,但也可以是/catalog/furniture
吗?
此处Servlet 2.4 Specification并不具体。
上下文路径:与此servlet所属的
ServletContext
关联的路径前缀。如果此上下文是“默认” 以Web服务器的URL名称空间为基础的上下文 path将是一个空字符串。否则,如果上下文没有root 在服务器名称空间的根目录下,路径以'/'开头 字符,但不以'/'字符结尾。
答案 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映射。