【问题标题】:Is `ServletContext` interface implemented by any classes inside Tomcat server?`ServletContext` 接口是否由 Tomcat 服务器内部的任何类实现?
【发布时间】:2017-08-05 10:45:35
【问题描述】:

我目前正在学习使用 Tomcat 9 服务器的 Java EE,重点是 ServletContext 接口。

我想知道哪些类实现了ServletContext接口,所以我查了official Oracle documentation。但是官方文档并没有列出任何实现ServletContext接口的类。而且我注意到ServletContext接口是public,因此我认为ServletContext接口一定是由tomcat服务器内部的某些类实现的。

因为我对 Java EE 和 Tomcat 比较陌生,所以我不确定我的假设是否正确。另外,如果我的假设确实正确,有人可以告诉我在哪里可以找到实现ServletContext 接口的源代码吗?我很想看看源代码并尝试了解它是如何工作的。

【问题讨论】:

  • 是的,实现将由 Tomcat 容器提供。但是我不知道它是具体的类还是匿名实现。

标签: java tomcat servlets jakarta-ee


【解决方案1】:

是的,这就是它的工作原理。 JavaEE 是一种规范,因此您所拥有的只是接口。实现由容器提供。

在tomcat中由ApplicationContext.java实现

【讨论】:

  • 请问您的搜索策略是什么?我必须非常熟悉 tomcat 实现才能找到一些东西还是有更聪明的方法?
  • 在 99.99% 的时间里,您都不应该担心 tomcat 的实现。只需学习规范。这就是该规范存在的原因,每个实现者可能使用不同的方法,但行为和 API 已经定义,所有实现者都必须遵循它(唯一的区别,即其他 0.01% 的情况,是规范的内容没有定义)。
  • @CaptainAmerica 我刚刚查看了我的一个项目,该项目依赖于 tomcat 什么类实现了ServletContext(然后用谷歌搜索了链接),不需要熟悉任何东西。您可以在您的一个项目中添加对mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina 的依赖项,并在您的IDE 中查找您感兴趣的任何实现(您还可以配置maven 以下载源代码和javadoc)。我也同意 albert_nil 的观点,只有当你感兴趣时才需要它,因为实际上做某事你只需要规范。
  • 感谢@albert_nil 和 Oleg 的提醒!真的很感激!
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
相关资源
最近更新 更多