在Servlet中,我们有ServletConfig和ServletContext。通过API我发现两者都是接口。以下是我的疑惑
1.ServletConfig和ServletContext是接口,如果它们是接口,这些对象是如何创建的?
2.容器的类是否实现了这些接口并提供了实现?
3.我在哪里可以找到ServletConfig和ServletContext的实例化代码?
4.什么时候创建ServletConfig和ServletContext。
我还读到有SerlvetContextListener,它有方法上下文Created()和contextDestroyed()。并且在启动服务器时调用这些方法。那是我们如何知道ServletContext对象被创建的?只是阅读这本书并没有让我清楚地了解ServletConfig和ServletContext。想知道代码是如何创建的。有人请解释或提供链接,以便我可以通过并获得清晰的图片
答案 0 :(得分:2)
1.ServletConfig和ServletContext是接口,如果它们是接口,这些对象是如何创建的?
实施由容器提供。请参阅tomcat中使用的ApplicationContext类
2.容器的类是否实现了这些接口并提供了实现?
与#1相同
3.我在哪里可以找到ServletConfig和ServletContext的实例化代码?
在grep代码中搜索tomcat-core jar,您可以找到实现。我链接了上面的ServletContext实现。
4.什么时候创建ServletConfig和ServletContext。
ServletContext是一个应用程序级对象,ServletConfig是每个Servlet。两者都将在您的应用程序加载时创建。
另外我读到有SerlvetContextListener并且它有方法 context Created()和contextDestroyed()。这些方法被称为 服务器启动时。这就是我们如何才能知道这一点 是否创建了ServletContext对象?
创建示例应用并添加ServletContextListener。请参见示例here。您可以在contextInitialized和Destroyed方法中添加日志,以查看它们何时被调用。