zoukankan      html  css  js  c++  java
  • Servlet生命周期

    生命周期通过Servlet方法来体现
    创建:执行init方法,只执行一次。所以只会被创建一次 

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

    Servlet什么时候被创建  

      

    • init方法是用来加载资源的
    • 如果加载的资源比较多,有的Servlet执行前需要依赖其他的Servlet,这种的就要在服务器启动时就创建。


      多用户同时访问,可能纯在多线程安全问题
      解决:尽量不要在Servlet中定义成员变量,定义局部变量。即使定义了成员变量,也不要对其修改(不要有并发的操作)。
      在一个对象里方法不被共享,成员变量可以共享

    提供服务:执行service方法,访问Servlet一次,执行一次。


    被销毁:Servlet被销毁时,执行destro方法,执行一次。在Servlet销毁前执行,用于释放资源(可以理解为交代临终遗言)

    服务器正常关闭才执行
    不正常关闭不会被执行(服务器突然断电,程序被直接关闭,不会被执行)

    ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多)

    String getServletName()  -- 获取当前Servlet在web.xml中配置的名字
    String getInitParameter(String name) -- 获取当前Servlet指定名称的初始化参数的值
    Enumeration getInitParameterNames()  -- 获取当前Servlet所有初始化参数的名字组成的枚举
    ServletContext getServletContext()  -- 获取代表当前web应用的ServletContext对象

    getServletInfo它提供有关servlet 的信息,如作者、版本、版权。

    package cn.itcast.web.servlet;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import java.io.IOException;
    
    /**
     * @author 旗木五五开
     * @create 2020-02-16 13:26
     * 如何只定义1个service方法,其它的方法按需求设置
     */
    @WebServlet("/demo1")
    public class ServletDemo1 implements Servlet{
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
    //    大多数就用这一个方法
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("demo1...");
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }
  • 相关阅读:
    六大设计原则之依赖倒置原则
    六大设计原则之里氏替换原则
    六大设计原则之单一设计原则
    六、Spring之DI的Bean的作用域
    五、spring之DI循环依赖
    四、spring之DI
    十二 NIO和IO
    十一 Pipe
    十 DatagramChannel
    九 ServerSocketChannel
  • 原文地址:https://www.cnblogs.com/rijiyuelei/p/12326183.html
Copyright © 2011-2022 走看看