我正在阅读有关servlet生命周期的内容,并对此表示怀疑。我们可以在重写的servlet的服务方法中调用servlet的init和destroy方法,比如调用任何其他java方法吗?这会影响容器的实际流量吗?
答案 0 :(得分:4)
您当然可以从init
方法调用destroy
和service
。根据这些方法的作用,即如果它们实际上销毁 servlet,这可能是不明智的。
比如说,我有一个请求进来并遇到问题。我认为解决此问题的最简单方法是调用destroy
然后init
来“重启”servlet。
我的重启时间非零,另一个请求在此期间进入。此请求遇到问题。它还决定重新启动servlet。
你知道这是怎么回事......
我建议不要使用servlet生命周期方法,并将其留给容器。如果必须调用这些方法,那么就要非常警惕线程同步。
就影响“容器的实际流量”而言 - 容器无法知道你调用了方法,这就是请求不断涌入的原因。容器将无视你调用这些方法。
答案 1 :(得分:1)
是的,你可以打电话给他们,但没有必要这样做。这个方法由Servlet容器使用。
如果需要初始化内部状态,则应使用此方法。
答案 2 :(得分:1)
方法init()
和destroy()
默认为空,您应该覆盖它们以获取/释放资源(例如)。
您可以调用它们,它不会影响servlet生命周期。
答案 3 :(得分:1)
你可以调用那些方法没问题。但它们是生命周期方法。无论容器执行的操作是什么,servlet类实例化和销毁都不会在那时发生。
每当容器调用时,只会发生那些操作(对象实例化和销毁)