Servlets 如何在servlet的init()方法中卸载servlet?我可以在servlet构造函数中卸载它吗?

Servlets 如何在servlet的init()方法中卸载servlet?我可以在servlet构造函数中卸载它吗?,servlets,Servlets,如何使用servlet的构造函数或init()方法从容器中卸载servlet 如果我使用servlet构造函数卸载它,init()方法还会被调用吗? 我应该抛出一个异常吗?如果是这样,检查或运行时?只要在servlet的构造函数或init()方法中抛出异常,就会阻止它在servlet容器的servlet映射中出现 当它已成功构造和初始化时,您不能在以后卸载它。您所能做的最好的事情就是根据某些条件在任何HTTP方法中抛出一个异常 然而,正确的方法取决于唯一的功能需求。很可能您根本不需要servle

如何使用servlet的构造函数或init()方法从容器中卸载servlet

如果我使用servlet构造函数卸载它,init()方法还会被调用吗?

我应该抛出一个异常吗?如果是这样,检查或运行时?

只要在servlet的构造函数或
init()方法中抛出异常,就会阻止它在servlet容器的servlet映射中出现

当它已成功构造和初始化时,您不能在以后卸载它。您所能做的最好的事情就是根据某些条件在任何HTTP方法中抛出一个异常

然而,正确的方法取决于唯一的功能需求。很可能您根本不需要servlet。仅仅因为手动卸载的愿望使得设计在技术上毫无意义。

如果我们在servlet上调用destroy(),那么并不意味着我们的servlet将被卸载/销毁。它只调用destroy,保持servlet不变,对servlet实例没有任何伤害。它仍然有效,因为您调用了destroy方法。调用销毁方法的不是容器机制


当容器决定从内存中销毁/卸载servlet实例时,容器运行销毁机制,销毁方法是销毁机制的步骤之一(以及几个步骤)。销毁机制让用户/开发人员有机会清理在实例构建/初始化过程中初始化的资源。

您所说的“卸载”是什么意思你们想做什么?我想让容器卸载servlet,这样若我用URL点击它,我就会得到不可用的错误。我很确定你们不能动态删除/卸载servlet。您可以使用方法添加/加载它们。为什么您不能只注释掉web.xml的一部分,或者注释掉
@WebServlet
注释,然后重新部署?如果我调用destroy方法会发生什么??它是被卸载还是只调用对象上的方法
destroy()
是由容器调用的,而不是由您调用的。这不是魔术,它只是一种连接servlet生命周期的方法。因此,正如您所说,如果您调用
destroy()
,您只是在对象上调用一个方法,仅此而已。