【问题标题】:What are the advantages or use cases of adding a Servlet, or a Filter programmatically?以编程方式添加 Servlet 或过滤器有哪些优点或用例?
【发布时间】:2012-04-22 22:45:48
【问题描述】:
这个Question 让我想知道,因为我没有看到使用 contextListener(据我所知运行一次)以编程方式添加 servlet 优于 DD 或 Annotations。我想知道一个常见的用例,它有助于以编程方式添加它们。
如果有一种方法可以在运行时(在应用程序运行期间)以编程方式添加 servlet,我可能会想到一些情况,但似乎只能通过 contextListener 或
来自 ServletContainerInitializer 的 onStartup 方法
实施。
如 Servlet 3.0 所述。
【问题讨论】:
标签:
java
jakarta-ee
servlets
servlet-3.0
【解决方案1】:
在运行时添加 servlet 等的能力主要是为框架创建者设计的。
如果您创建一个框架,例如,使用普通的 POJO Java 对象,那么您需要在某些时候创建 servlet - 它们必须公开 POJO 类以进行 Web 访问。因为您可以动态创建 servlet,所以不需要 POJO 类的配置文件。不错!
一般框架可能还具有可以动态“打开/关闭”的过滤器,例如可以有可切换的过滤器来处理用户授权/身份验证。
在“普通”应用程序中,通常所有 Servlet、过滤器都是预先知道的,因此几乎不需要编程添加。