サーブレットのライフサイクル・アプローチ

Servlet中的生命周期方法:
	1. 被创建:执行init方法,只执行一次
		* Servlet什么时候被创建?
			* 默认情况下,第一次被访问时,Servlet被创建
			* 可以配置执行Servlet的创建时机。
				*<servlet>标签下配置
					1. 第一次被访问时即访问浏览器时,创建
	                	* <load-on-startup>的值为负数
			        2. 在服务器启动时,创建
			            * <load-on-startup>的值为0或正整数


		* Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
			* 多个用户同时访问时,可能存在线程安全问题。
			* 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值

	2. 提供服务:执行service方法,执行多次
		* 每次访问Servlet时,Service方法都会被调用一次。
	3. 被销毁:执行destroy方法,只执行一次
		* Servlet被销毁时执行。服务器关闭时,Servlet被销毁
		* 只有服务器正常关闭时,才会执行destroy方法。
		* destroy方法在Servlet被销毁之前执行,一般用于释放资源
package com.web.servlet;

import javax.servlet.*;
import java.io.IOException;

/**
 * @ClassName: ServletDemo1
 * @Description: TODO
 * @author: Doge_fang
 * @date: 2020/3/2  16:09
 */
public class ServletDemo1 implements Servlet {
    /**
     * 初始化方法,在servlet被创建时执行,只会执行一次
     * @param servletConfig
     * @throws ServletException
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    /**
     * 获取servletconfig对象
     * servletconfig:sevlet的配置对象
     * @return
     */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * 提供服务方法
     * 每一次servlet被访问时执行,会执行多次
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("打印servlet");

    }

    /**
     * 获取servlet的一些信息,版本、作者.....
     * @return
     */
    @Override
    public String getServletInfo() {
        return null;
    }

    /**
     * 销毁方法
     * 在服务器关闭时执行,只会执行一次
     */
    @Override
    public void destroy() {

    }
}

公開された94元の記事 ウォンの賞賛0 ビュー1896

おすすめ

転載: blog.csdn.net/fanfjaiyun/article/details/104615234