servlet生命周期方法

servlet生命周期方法

java代码

复制代码
package bai.servlet;


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

public class ServletDemo03 implements Servlet {
    /**
     * 初始化方法
     * 在Servlet创建时 执行 只会执行一次
     * @param servletConfig
     * @throws ServletException
     */
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init.....");
    }

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

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

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

    /**
     * 销毁方法
     * 在服务器正常关闭时 执行 执行一次
     */
    public void destroy() {
        System.out.println("destroy.....");
    }
}
复制代码

运行这三个的方法

 

 1.被创建:执行init方法 只执行一次

  • servlet默认情况下 第一次被访问时 Servlet被创建
  • 可以在配置执行Servlet的创建时机
    • 在<Servlet>标签下配置

xml第一种代码

复制代码
<servlet>
        <servlet-name>demo3</servlet-name>
        <servlet-class>bai.servlet.ServletDemo03</servlet-class>

        <!--指定Servlet的创建时机
            第一次被访问时 创建
            <load-on-startup>的值为负数 
        -->
        <load-on-startup>-5</load-on-startup>
    </servlet>
    <!--映射demo1的配置-->
    <servlet-mapping>
        <servlet-name>demo3</servlet-name>
        <url-pattern>/demo3</url-pattern>
    </servlet-mapping>
复制代码

运行结果

 

 xml第二种方式代码

复制代码
 <servlet>
        <servlet-name>demo3</servlet-name>
        <servlet-class>bai.servlet.ServletDemo03</servlet-class>

        <!--指定Servlet的创建时机
            在服务器启动时 创建
            <load-on-startup>的值为0或正整数
        -->
        <load-on-startup>5</load-on-startup>
    </servlet>
    <!--映射demo1的配置-->
    <servlet-mapping>
        <servlet-name>demo3</servlet-name>
        <url-pattern>/demo3</url-pattern>
    </servlet-mapping>
复制代码

运行结果

 

 

Servlet的init方法 只执行一次 说明一个Servlet在内存中只存在一个对象 Servlet是单例的

  • 多个用户同时访问 可能存在线程安全问题
  • 解决:尽量不要在Servlet中定义成员变量 即使定义了成员变量 也不要对修改值

 

2.提供服务:执行Service方法 执行多次

  • 每次访问Serclet时 Serclce方法都会被调用一次

3.被销毁:执行destroy方法 只执行一次

  • Servlet被销毁时执行 服务器关闭时 Servlet被销毁
  • 只有服务器正常关闭时 才会执行destroy方法
  • destroy方法在Servlet被销毁之前执行 一般用于释放资源
posted @   baimingze  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示