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

标签 java servlets web.xml deployment-descriptor

我们知道,每当对servlet的请求到来时,servlet容器都会首先检查web.xml文件中的url和相应的servlet类。很好,但是之后就产生了混乱。假设我正在使用load-on-startup属性。因此,在第一次调用之前就应该准备好Servlet。在这种情况下,容器需要Servlet Config对象才能使Servlet正常工作。但是再次在web.xml文件中定义了servlet的启动时加载和init参数。因此,当容器恰好使用web.xml时(当使用load-on-startup属性时,容器显然不能等待首次调用,因此容器必须再次读取web.xml文件才能知道该属性是否与任何servlet一起使用。)

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

最佳答案

加载和实例化:

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

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

初始化:

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

参考:JSR-000315 JavaTM Servlet 3.0

本文翻译自 https://stackoverflow.com/questions/18996025/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。


相关文章:

java - Tomcat-重定向到错误页面后如何更改URL

java - 从片段B返回到片段A的值

java - Java EE Tomcat DefaultServlet扩展不适用于静态文件

javascript - 从Ajax传递时,数组值变为null

java - 码头8 GzipFilter有时不适用

java - 我们可以在web.xml URL模式中使用正则表达式吗?

tomcat - 仍然可以使用HTTP访问具有保密传输保证的URL

java - 有没有办法让所有字符等同于语言环境中的给定字符

java - 是否可以将Java编辑区域添加到Eclipse RCP部件?

java - 升级到Hibernate 5时,SessionFactoryImpl中的AbstractMethodError