我们知道,每当对 servlet 的请求到来时,servlet 容器将首先检查 web.xml 文件中的 url 和相应的 servlet 类。这很好,但困惑随之而来。假设我正在使用启动时加载属性。因此,servlet 应该在第一次调用进入之前准备就绪。在这种情况下,容器需要 servlet Config 对象来使 servlet 工作。但是再次启动时加载和 servlet 的初始化参数在 web.xml 文件中定义。那么容器究竟何时使用 web.xml?(当使用启动时加载属性时,容器显然不能等待第一次调用,容器必须再次读取 web.xml 文件以了解该属性是否与任何 servlet 一起使用。)
如果有人能解开我的困惑就更好了。如果可能,请提供一些可靠的链接。
最佳答案
加载和实例化:
servlet 容器负责加载和实例化 servlet。加载和实例化可以在容器启动时发生,或者延迟到容器确定需要 servlet 来为请求提供服务。
当servlet 引擎启动时,需要的servlet 类必须由servlet 容器定位。 servlet 容器使用普通的 Java 类加载工具加载 servlet 类。加载可能来自本地文件系统、远程文件系统或其他网络服务。由于在 web.xml
中声明了 servlet,因此在容器启动期间由容器加载和读取该文件。
初始化:
servlet对象实例化后,容器必须先初始化servlet
它可以处理来自客户端的请求。容器通过使用实现 ServletConfig
接口(interface)的唯一(每个 servlet 声明)对象调用 Servlet 接口(interface)的 init 方法来初始化 servlet 实例。
关于java - 当容器调用部署描述符(web.xml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18996025/