更改Init()上的servlet位置

时间:2013-09-19 11:09:28

标签: java servlets

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

3 个答案:

答案 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