当前位置: 首页 > 知识库问答 >
问题:

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

云承天
2023-03-14

我们知道,每当对 servlet 的请求出现时,servlet 容器将首先检查 web.xml 文件中的 url 和相应的 servlet 类。这很好,但混乱在那之后就来了。假设我正在使用启动时加载属性。因此,在第一个调用进入之前,servlet 应该准备就绪。在这种情况下,容器需要 servlet Config 对象来使 servlet 正常工作。但是,servlet 的启动加载和 init 参数同样是在 web.xml 文件中定义的。那么容器究竟是什么时候使用web.xml呢?(当使用启动时加载属性时,容器显然不能等待第一次调用,容器必须再次读取web.xml文件才能知道该属性是否与任何servlet一起使用。

如果有人能消除我的困惑就更好了。请提供一些可靠的链接,如果可能的话。

共有2个答案

朱典
2023-03-14

在web服务器上部署应用程序时,会立即读取< code>web.xml。为了便于理解,您可以假设container就是您的web服务器。虽然web服务器不仅仅是一个web容器。

Web服务器读取<code>Web。xml,并加载上下文配置、加载启动服务等<代码>网络。xml是一个文件,通过它您可以告诉容器/服务器有关应用程序的信息。您的web应用程序位于web服务器内部,服务器拦截所有传入的请求,并根据上下文决定将请求转发到哪个应用程序。

锺离玮
2023-03-14

加载和实例化:

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

当servlet引擎启动时,servlet容器必须找到所需的servlet类。servlet容器使用普通的Java类加载工具加载servlet类。加载可以来自本地文件系统、远程文件系统或其他网络服务。由于servlets是在< code>web.xml中声明的,因此该文件在容器启动期间由容器加载和读取。

初始化:

实例化servlet对象后,容器必须先初始化servlet,然后才能处理来自clients.The容器通过调用Servlet接口的init方法来初始化servlet实例,该方法具有实现ServletConfig接口的唯一(每个servlet声明)对象。

参考图片:JSR-000315 JavaTM Servlet 3.0

 类似资料:
  • 如果 Web 应用不包含任何 servlet、过滤器、或监听器组件或使用注解声明相同的,那么可以不需要 web.xml 文件。换句话说,只包含静态文件或 JSP 页面的应用程序并不需要一个 web.xml 的存在。

  • 这个版本规范的部署描述文件可在此下载:http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd

  • 本章指定的 Java™ Servlet 规范要求 Web 容器支持部署描述文件。部署描述文件表达了应用开发人员、应用集成人员和 Web 应用部署人员之间的元素和配置信息。 对于 Java Servlet 2.4 和以后的版本,部署描述文件在 XML 模式文档中定义。 为了向后兼容到2.2版本的API编写的应用程序,Web 容器也需要支持2.2版本的部署描述文件。为了向后兼容2.3版本的API编写的

  • Web 应用程序部署描述文件(见第14章,“部署描述文件”)的配置和部署信息包括以下几种类型: ServletContext 的初始化参数 Session 配置 Servlet/JSP 的定义 Servlet/JSP 的映射 MIME 类型映射 欢迎文件列表 错误页面 安全 扩展的依赖关系 当许多应用程序使用相同的代码或资源,通常将它们安装在容器的库文件中。这些文件往往是通用的或标准的 API,可

  • 本节举例说明部署描述文件中的元素。属性没有在图中显示。详细信息请参阅部署描述文件模式。 1.web-app元素 web-app 元素是一个 Web 应用程序的根部署描述符。此元素包含下列元素。这个元素有一个必需的属性 version 来指定部署描述符符合哪个版本的模式。此元素的所有子元素可以是任意的顺序。 FIGURE 14-1 web-app Element Structure 2.descri

  • 所有servlet容器的Web应用程序部署描述文件需要支持以下类型的配置和部署信息: ServletContext初始化参数 Session配置 Servlet声明 Servlet映射 应用程序生命周期监听器类 过滤器定义和过滤器映射 MIME类型映射 欢迎文件列表 错误页面 语言环境和编码映射 安全配置,包括login-config,security-constraint,security-co