Servlets 的生命周期

Servlets 可以通过以下方式对重大事件做出反应:

  • 它可以自己“初始化”。

  • 它可以开始运行。

  • 它可以停止运行。

  • 它可以执行final清理,以准备卸载。

本节介绍了使用所有这些方法的新 ServletsSimple。与 Java 应用程序不同,小应用程序无需实现main方法。

这是SimpleServlets。

A browser with JavaScript enabled is required for this page to operate properly\.  

Note:

如果看不到示例正在运行,则可能需要在浏览器中启用 JavaScript 解释器,以便 Deployment Toolkit 脚本能够正常运行。

以下是SimpleServlets 的源代码。每当该 applet 遇到其生命中的重要里程碑时,例如当用户首次访问该 applet 所在的页面时,它将显示一个描述性字符串。

import java.applet.Applet;
import java.awt.Graphics;

//No need to extend JApplet, since we don't add any components;
//we just paint.
public class Simple extends Applet {

    StringBuffer buffer;

    public void init() {
        buffer = new StringBuffer();
        addItem("initializing... ");
    }

    public void start() {
        addItem("starting... ");
    }

    public void stop() {
        addItem("stopping... ");
    }

    public void destroy() {
        addItem("preparing for unloading...");
    }

    private void addItem(String newWord) {
        System.out.println(newWord);
        buffer.append(newWord);
        repaint();
    }

    public void paint(Graphics g) {
	//Draw a Rectangle around the applet's display area.
        g.drawRect(0, 0, 
		   getWidth() - 1,
		   getHeight() - 1);

	//Draw the current string inside the rectangle.
        g.drawString(buffer.toString(), 5, 15);
    }
}

Note:

在此示例中,扩展了Applet类,而不扩展了 Swing JApplet类,因为不需要将 Swing 组件添加到此 applet。

加载 Servlets

由于加载了 applet,您应该看到文本“正在初始化...正在启动...”。加载 Servlets 后,将发生以下情况:

  • Servlets 的控制类(Applet子类)的实例已创建。

  • Servlets 将初始化自己。

  • Servlets 开始运行。

离开并返回 Servlets 页面

例如,当用户离开该页面转到另一个页面时,浏览器将停止并破坏该 applet。Servlets 的状态未保留。当用户返回页面时,浏览器将初始化并启动该 applet 的新实例。

重新加载 Servlets

当刷新或重新加载浏览器页面时,Applet 的当前实例将停止并销毁,并创建一个新实例。

退出浏览器

当用户退出浏览器时,Servlets 将有机会自行停止并在浏览器退出之前执行final清除。

下载源代码用于“简单 Servlets”示例,以进一步进行实验。