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

标签 java servlets web.xml deployment-descriptor

我们知道,每当对 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 实例。

引用:JSR-000315 JavaTM Servlet 3.0

关于java - 当容器调用部署描述符(web.xml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18996025/

相关文章:

java - 使用 s 解析 Struts2 标签中 Hashmap 的 ArrayList :iterator

java - 如何获取rgb中的颜色并将其放入MySQL数据库JColorChooser

java - 高效的缓存同步

java - 使用 HTTPServlet 调用的相对路径

jsf - java.lang.ClassCastException : org. apache.xml.dtm.ref.DTMManagerDefault 无法转换为 org.apache.xml.dtm.DTMManager

java - 我如何在 JUnit 测试之间共享状态?

java - Paranamer 不返回参数名称

java - 启动过滤器时出现异常 - Servlet

java - 如何在Java servlet中获取asp.net创建的cookie?

spring - 如何在 Spring 中将两个参数值放在一个上下文参数中?