当容器调用部署描述符(web.xml)时

时间:2013-09-25 04:05:04

标签: java servlets web.xml deployment-descriptor

我们知道,无论何时发出servlet请求,servlet容器都会首先检查web.xml文件中的url和相应的servlet类。这很好,但之后出现了混乱。假设我正在使用load-on-startup属性。因此,servlet应该在第一次调用之前就绪。在这种情况下,容器需要servlet Config对象来使servlet工作。但是再次加载启动和servlet的init-parameter在web.xml文件中定义。那么当确切的容器使用web.xml时?(当使用load-on-startup属性时,容器显然不能等待第一次调用,容器必须再次读取web.xml文件以了解该属性是否与任何servlet一起使用。)

如果有人能清除我的困惑会更好。如果可能,请提供一些可靠的链接。

2 个答案:

答案 0 :(得分:3)

只要在Web服务器上部署应用程序,就会读取

web.xml。为了便于理解,您可以假设容器只是您的Web服务器。虽然Web服务器不仅仅是一个Web容器。

Web服务器读取web.xml,并加载上下文配置,在启动服务器上加载等。 web.xml是您通过其向容器/服务器通知您的应用程序的文件。您的Web应用程序位于Web服务器内,服务器拦截所有传入的请求,根据上下文决定应该将请求转发到哪个应用程序。

答案 1 :(得分:3)

加载和实例化:

servlet容器负责加载和实例化servlet。加载和实例化可以在容器启动时发生,也可以延迟,直到容器确定需要servlet来处理请求。

当servlet引擎启动时,必须由servlet容器定位所需的servlet类。 servlet容器使用普通的Java类加载工具加载servlet类。加载可以来自本地文件系统,远程文件系统或其他网络服务。并且当在web.xml中声明servlet时,容器在容器启动期间加载并读取该文件。

<强>初始化:

实例化servlet对象后,容器必须先初始化servlet 它可以处理来自客户端的请求。容器通过使用实现ServletConfig接口的唯一(每个servlet声明)对象调用Servlet接口的init方法来初始化servlet实例。

参考:JSR-000315 JavaTM Servlet 3.0