是否可以更改初始化参数,以便在不同的路径上创建 servlet?我需要在某个路径上创建一个 servlet。此外,是否可以人为地在 init 参数中传递路径?
3 回答
正如其他答案中已经显示的那样,servlet 映射不受 servlet 控制,因此您不能从 servlet 实例中更改它。
但是,您可以通过引入一个间接级别(类似于“调度程序”servlet)来解决此问题:将您的 servlet 映射到通配符模式(如/app/*
)并在您的 servlet 内部根据请求 url 路径决定实际操作:/app/X
将触发一些 X 动作,while/app/Y
将触发 Y。
许多 Web 框架将提供开箱即用的全部功能:例如,您可以查看 Spring MVCDispatcherServlet
及其HandlerMapping
概念。
简短的回答 - 您无法更改与 init 中的 servlet 路径映射相关的任何内容,因为 servlet 容器已经从 web.xml 读取映射。
更长的答案 - 例如,您可能想查看 Tomcat 中的 servlet 加载程序,也许可以通过 JMX 调用它的方法或执行其他操作。
如果您只想拥有多个映射并根据配置选择要服务的映射 - 使用 Servlet Filter
Servlets
不是在某个路径上创建的。它们是 servlet 容器 Java 应用程序创建的 Java 对象。例如,如果您正在运行 Tomcat,您的应用程序将从该/webapps
目录运行。您最多可以更改 Tomcat 配置以从其他路径运行它,但您必须在实际启动应用程序之前执行此操作。