如何在不在 Servlet 中声明其 class 的对象的情况下调用 getServletContext

how does getServletContext get called without declaring an object of its class in Servlets

在 servlet 中,如何在不声明其 class 对象的情况下调用 getServletContext? getServletContext 在其声明中没有静态。举个例子——ServletContext context=getServletContext();

tl;博士

你写的Servlet从它的superclassHttpServlet继承了getServletContext方法,而它又从它的superclassGenericServlet继承了方法.

您编写的 servlet class 的对象由您在 Servlet 规范中 web container such as Apache Tomcat, Eclipse Jetty, etc. See Servlet Life Cycle 自动实例化。

你的 Servlet ➜ HttpServletGenericServlet

代码:

ServletContext context = getServletContext() ;

… 的缩写:

ServletContext context = this.getServletContext() ;

this 是对任何对象的引用 运行 该代码。在我们这里的例子中,该对象是您自己的 servlet。

您在运行时的 servlet 是您在开发时编写的 class 的一个实例,由您的 Web 容器自动实例化。 class,您创作的 class,是 HttpServlet. That superclass HttpServlet extends from its superclass GenericServlet.

的子 class

GenericServletclass携带方法getServletContext。 subclass HttpServlet 继承了那个方法。作为 HttpServlet 的子 class,您自己的 class 也继承了该方法。

我怎么知道这一切?通过阅读 Javadoc。

参见Jakarta Servlet specification page