gpt4 book ai didi

java - tomcat如何识别注解指定的servlet?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:33:29 28 4
gpt4 key购买 nike

在 servlet 3.0 之前,servlet 需要通过提供 url 模式和 servlet 类在 web.xml 中进行配置。每当发送对 servlet 的请求时,tomcat 都会在 web.xml 中搜索 servlet 类,并根据请求的类型调用 doget 或 dopost。在 servlet 3.0 中,我们可以使用 @WebServlet 等注释在 servlet 类本身中配置 servlet。我的问题是在这种情况下 tomcat 如何识别 servlet 类,因为在 web.xml 中没有为 servlet 指定映射。

提前致谢。

最佳答案

Tomcat 扫描 Web 应用程序以查找类文件(在 WEB-INF/classes 下和 JAR 中)。然后将类文件传递给 Apache Commons Byte Code Engineering Library (BCEL) 的经过大量编辑、重命名的包的本地副本。 Tomcat 的 BCEL 版本经过优化,仅处理 Tomcat 感兴趣的字节码部分(注释、父类(super class)(如果有)、已实现的接口(interface)),并尽可能快地跳过其余​​部分。 BCEL 直接从磁盘读取类文件。

Tomcat 对来自 BCEL 的结果做了一些仔细的缓存,这样即使对于最复杂的类层次结构,每个类也只处理一次,如果注释(包括从 super 继承的那些),则不需要后处理来获取完整列表类)对于任何类。

注释扫描还会检查与 SCI 的 @HandlesTypes 注释的匹配。

无论您如何扫描每个类的注解都非常昂贵(这也是我不喜欢此特定功能的原因之一)。 Tomcat 的实现在达到它现在使用的高效实现之前经历了几次迭代。

关于java - tomcat如何识别注解指定的servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23776644/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com