返回介绍

C.2 Servlet

发布于 2025-04-22 20:10:06 字数 1515 浏览 0 评论 0 收藏

Servlet 接口中定义了以下 5 个方法:

void init(ServletConfig config) throws ServletException

void service(ServletRequest request, ServletResponse response)
    throws ServletException, java.io.IOException

void destroy()

java.lang.String getServletInfo()

ServletConfig getServletConfig()

注意,编写 Java 方法签名的惯例是,对于和包含该方法的类型不处于同一个包中的类型,要使用全类名。正因为如此,在 Service 方法 javax.servlet.ServletException 的签名中(与 Servlet 位于同一个包中),是没有包信息的,而 java.io.Exception 则是要写成完整名称的。

init、service 和 destroy 是生命周期方法。Servlet 容器根据以下规则调用这 3 个方法:

  • init,当请求 Servlet 时,Servlet 容器会第一时间调用这个方法。这个方法在后续请求中不会再被调用。利用这个方法调用初始化代码。调用这个方法时,Servlet 容器会传入一个 ServletConfig。一般来说,你会将 ServletConfig 赋给一个类级变量,因此这个对象可以通过 Servlet 类的其他位置来使用。

  • service,每当请求 Servlet 时,Servlet 容器就会调用这个方法。编写代码时,假设 Servlet 要在这里被请求。第一次请求 Servlet 时,Servlet 容器调用 init 方法和 Service 方法。后续的请求将只调用 service 方法。

  • destroy,当要销毁 Servlet 时,Servlet 容器就会调用这个方法。当要卸载应用程序,或者当要关闭 Servlet 容器时,就会发生这种情况。一般会在这个方法中编写清除代码。

Servlet 中的另外两个方法是非生命周期方法,即 getServletInfo 和 getServletConfig。

  • getServletInfo,这个方法会返回 Servlet 的描述。你可以返回有用或为 null 的任意字符串。

  • getServletConfig,这个方法会返回由 Servlet 容器传给 init 方法的 ServletConfig。但是,为了让 getServletConfig 返回一个非 null 值,必须将传给 init 方法的 ServletConfig 赋给一个类级变量。ServletConfig 将在 C.6 小节中讲解。

注意线程安全性。Servlet 实例会被一个应用程序中的所有用户共享,因此不建议使用类级变量,除非它们是只读的,或者是 java.util.concurrent.atomic 包的成员。

C.3 将介绍如何编写 Servlet 实现。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。