0

是否可以更改初始化参数,以便在不同的路径上创建 servlet?我需要在某个路径上创建一个 servlet。此外,是否可以人为地在 init 参数中传递路径?

4

3 回答 3

1

正如其他答案中已经显示的那样,servlet 映射不受 servlet 控制,因此您不能从 servlet 实例中更改它。

但是,您可以通过引入一个间接级别(类似于“调度程序”servlet)来解决此问题:将您的 servlet 映射到通配符模式(如/app/*)并在您的 servlet 内部根据请求 url 路径决定实际操作:/app/X将触发一些 X 动作,while/app/Y将触发 Y。

许多 Web 框架将提供开箱即用的全部功能:例如,您可以查看 Spring MVCDispatcherServlet及其HandlerMapping概念。

于 2013-09-19T12:54:58.853 回答
0

简短的回答 - 您无法更改与 init 中的 servlet 路径映射相关的任何内容,因为 servlet 容器已经从 web.xml 读取映射。

更长的答案 - 例如,您可能想查看 Tomcat 中的 servlet 加载程序,也许可以通过 JMX 调用它的方法或执行其他操作。

如果您只想拥有多个映射并根据配置选择要服务的映射 - 使用 Servlet Filter

于 2013-09-19T12:40:15.173 回答
0

Servlets不是在某个路径上创建的。它们是 servlet 容器 Java 应用程序创建的 Java 对象。例如,如果您正在运行 Tomcat,您的应用程序将从该/webapps目录运行。您最多可以更改 Tomcat 配置以从其他路径运行它,但您必须在实际启动应用程序之前执行此操作。

于 2013-09-19T12:32:52.000 回答