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