精华内容
下载资源
问答
  • servlet生命周期有几个阶段
    2021-03-06 22:42:07

    小伙伴们知道servlet吗?这次我们要说的是java中的servlet,小伙伴们知道servlet的声明周期都包括哪些吗?下面就听小编介绍介绍吧。

    Servlet生命周期包含哪些?

    我们要了解,一个Servlet生命周期一共分为三个阶段:

    一、初始化阶段 调用init()方法

    一般在下列场景Servlet容器会装载Servlet:

    1)、Servlet容器启动时自动装载某些Servlet时,实现它只需要在web.XML文件中的之间添加如下代码:1

    2)、Servlet容器启动后,客户首次向Servlet发送请求时

    3)、Servlet类文件被更新后,重新装载Servlet时

    Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在一个Servlet的整个生命周期内,init()方法只会被调用一次。

    二、响应客户请求阶段 调用service()方法

    一般对于用户到达Servlet的请求,Servlet容器会创建一个特定于这个请求的ServletRequest对象与ServletResponse对象,并调用Servlet的service方法。service方法会从ServletRequest对象获得客户请求信息,之后处理这个请求,并通过ServletResponse对象向客户返回响应信息。

    三、终止阶段 调用destroy()方法

    通常来说,当一个WEB应用被终止,或一个Servlet容器终止运行,或一个Servlet容器重新装载Servlet新实例时,Servlet容器会优先调用Servlet中的destroy()方法,这个destroy()方法能够释放掉Servlet所占用的资源。

    Servlet一般何时被创建?

    1)、在全部默认情况下,web客户端第一次请求访问某个Servlet的时候,WEB容器就会创建这个Servlet的实例。

    2)、在web.xml文件中,如果元素指定了子元素时,Servlet容器就会在启动web服务器时,按顺序创建并初始化Servlet对象。

    以上就是关于servlet周期的所有内容了,你了解了吗?如果需要了解更多相关servlet常见问题,就请关注奇Q工具网了解详情吧。

    推荐阅读:

    更多相关内容
  • servlet生命周期:5个阶段 a.加载:加载和卸载由servlet容器自动处理 b.初始化:init(),该方法会在servlet被加载并实例化后执行 c.服务:service(),–>doget(),dopost() d.销毁:destory(),servlet被系统...

    servlet的生命周期:5个阶段
    a.加载:加载和卸载由servlet容器自动处理
    b.初始化:init(),该方法会在servlet被加载并实例化后执行
    c.服务:service(),–>doget(),dopost()
    d.销毁:destory(),servlet被系统回收时执行
    e.卸载:加载和卸载由servlet容器自动处理
    在这里插入图片描述

    展开全文
  • Servlet生命周期

    万次阅读 多人点赞 2019-06-02 17:36:53
    主要分为以下几个阶段: 加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求处理(服务阶段)—>销毁 服务器启动时(web.xml中配置load-on-startup=1,默认为0)或者第一次请求该servlet时...

    Servlet的生命周期

    servlet的生命周期就是从servlet出现到销毁的全过程。主要分为以下几个阶段:
    加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求处理(服务阶段)—>销毁

    服务器启动时(web.xml中配置load-on-startup=1,默认为0)或者第一次请求该servlet时,就会初始化一个Servlet对象,也就是会执行初始化方法init(ServletConfig conf),该servlet对象去处理所有客户端请求,service(ServletRequest req,ServletResponse res)方法中执行,最后服务器关闭时,才会销毁这个servlet对象,执行destroy()方法。其中加载阶段无法观察,但是初始化、服务、销毁阶段是可以观察到的。

    在这里插入图片描述

    public class EmpServlet extends HttpServlet{
    	//初始化servlet,调用init方法
    	@Override
    	public void init() throws ServletException {
    		System.out.println("初始化时调用");
    	}
    	//开启服务
    	@Override
    	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
    		System.out.println("开启服务时调用");
    	}
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		
    	}
    	//销毁时调用destory
    	@Override
    	public void destroy() {
    		System.out.println("销毁时调用");
    	}
    }
    

    在这里插入图片描述
    思考问题
    为什么创建的servlet是继承自httpServlet,而不是直接实现Servlet接口?

    解答:
    首先我们来看下源码,HttpServlet的继承结构
    在这里插入图片描述
    HttpServlet继承了GenericServlet,GenericServlet是一个通用的Servlet,那么他的作用是什么呢?大概的就是将实现Servlet接口的方法,简化编写servlet的步骤。
    GenericServlet的继承结构:
    在这里插入图片描述
    实现了Servlet接口和ServletConfig接口

    Servlet接口的内容

    public interface Servlet {
    	void init(ServletConfig var1) throws ServletException;
    
    	ServletConfig getServletConfig();
    
    	void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
    
    	String getServletInfo();
    
    	void destroy();
    }
    

    从这里可以看到,Servlet生命周期的三个关键方法,init、service、destroy。还有另外两个方法,一个getServletConfig()方法来获取ServletConfig对象,ServletConfig对象可以获取到Servlet的一些信息,ServletName、ServletContext、InitParameter、InitParameterNames、通过查看ServletConfig这个接口就可以知道

    public interface ServletConfig {
    	String getServletName();
    
    	ServletContext getServletContext();
    
    	String getInitParameter(String var1);
    
    	Enumeration<String> getInitParameterNames();
    }
    

    其中ServletContext对象是servlet上下文对象,功能有很多,获得了ServletContext对象,就能获取大部分我们需要的信息,比如获取servlet的路径,等方法。

    到此,就知道了Servlet接口中的内容和作用,总结起来就是,三个生命周期运行的方法,获取ServletConfig,而通过ServletConfig又可以获取到ServletContext。而GenericServlet实现了Servlet接口后,也就说明我们可以直接继承GenericServlet,就可以使用上面我们所介绍Servlet接口中的那几个方法了,能拿到ServletConfig,也可以拿到ServletContext,不过那样太麻烦,不能直接获取ServletContext,所以GenericServlet除了实现Servlet接口外,还实现了ServletConfig接口,那样,就可以直接获取ServletContext了。

    在这里插入图片描述
    上图我们观察到,init方法存在两个,一个带参,一个无参

    private transient ServletConfig config;
    public void init(ServletConfig config) throws ServletException {
    		this.config = config;
    		this.init();
    	}
    
    	public void init() throws ServletException {
    	}
    	public ServletConfig getServletConfig() {
    		return this.config;
    	}
    

    通过这几个方法一起来讲解,首先看init(ServletConfig config)方法,因为只有init(ServletConfig config)中带有ServletConfig对象,为了方便能够在其他地方也能直接使用ServletConfig对象,而不仅仅局限在init(ServletConfig config)方法中,所以创建一个私有的成员变量config,在init(ServletConfig config)方法中就将其赋值给config,然后通过getServletConfig()方法就能够获取ServletConfig对象了,这个可以理解,但是在init(ServletConfig config)中,158行,还调用了一个init()方法,并且这个init()方法是空的,什么读没有,这是为什么呢?这个原因是为了防止一件事情,当我们需要在init方法中做一点别的事情,我们想到的方法就是继承GenericServlet并且重写了init(ServletConfig config)方法,这样依赖,就破坏了原本在GenericServlet类中init(ServletConfig config)写的代码了,也就是在GenericServlet类中的成员变量config会一直是null,无法得到赋值,因为被重写了,就不会在执行GenericServlet中init(ServletConfig config)方法中的代码。要想赋值,就必须在重写的init(ServletConfig config)方法中调用父类的init(ServletConfig config)方法,也就是super.init(ServletConfig config),这样一来,就很不方便,怕有时候会忘了写这句代码,所以在GenericServlet类中增加一个init()方法,以后需要在init方法中需要初始化别的数据,只需要重写init()这个方法,而不需要去覆盖init(ServletConfig config)这个方法,这样设计,就好很多,不用在管init(ServletConfig config)这个其中的内容了。也不用出现其他的问题。

    总结:
    Servlet的生命周期分为:加载阶段、实例化阶段、初始化阶段、服务阶段、销毁阶段。上面我们说了servlet默认是第一次被访问的时候初始化的,这种情况当用户要使用的时候才创建,也可以在服务器一启动的时候就创建好servlet(这种方式一般不用),要实现这样的操作需要进行配置,在web.xml中进行配置
    在这里插入图片描述

    展开全文
  • Servlet生命周期是指Servlet实例从创建到响应客户请求,直至销毁的过程。

    Servlet生命周期是指Servlet实例从创建到响应客户请求,直至销毁的过程。

    Servlet程序本身不直接在Java虚拟机上运行,由Servlet容器负责管理其整个生命周期。

    Servlet生命周期可分为四个阶段:实例化初始化处理请求销毁

    • Servlet加载和实例化
      • 在Servlet容器启动后,客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet 对象的service方法。
      • 在为Servlet配置了自动装入选项(load-on-startup)时,服务器在启动时会自动装入此Servlet。
    • Servlet初始化
      • Servlet实例化后,Servlet容器将调用Servlet的init方法来对Servlet实例进行初始化,如果初始化成功,Servlet在Web容器中会处于服务可用状态;如果初始化失败,Servlet容器会销毁该实例。
      • 当Servlet运行出现异常时,Servlet容器会使该实例变为服务不可用状态。
    • Servlet请求处理
      • 服务器接收到客户端请求,会为该请求创建“请求”对象和“响应”对象,并调用service()方法,service()方法再调用其他方法来处理请求。
      • 在Servlet生命周期中,service()方法可能被多次调用。当多个客户端同时访问某个Servlet的service()方法时,服务器会为每个请求创建一个线程,这样可以并行处理多个请求,减少请求处理的等待时间,提高服务器的响应速度。但同时也要注意对同一对象的并发访问问题。
    • Servlet服务终止
      • 当Servlet容器需要终止Servlet(如Web服务器被关闭或需要出让资源),它会先调用Servlet的destroy()方法使其释放正在使用的资源。
      • 在调用destroy()方法之前,必须让当前正在执行service()方法的任何线程完成执行,或者超过了服务器定义的时间限制。
      • 在destroy()方法完成后,Servlet容器必须释放Servlet实例以便被垃圾回收。
    展开全文
  • 生命周期分成哪几个阶段? 实例化(创建) 初始化(容器调用servlet对象的init方法。) 就绪(调用) 销毁 实例化(创建) 容器创建servlet实例(对象) 什么时候实例化? 情形1:容器收到请求之后。 情形2:...
  • Servlet生命周期及每个阶段使用的方法
  • 简述servlet生命周期

    2019-06-26 16:02:55
    servlet生命周期 主要方法: init()初始化阶段 service()处理客户端请求阶段 destroy()终止阶段 初始化阶段: Servlet容器加载Servlet,加载完成后,Servlet容器会创建一Servlet实例并调用init()方法,init...
  • servlet生命周期大致分为3个阶段,分别是初始化阶段,运行阶段和销毁阶段。 1.初始化阶段: init(ServletConfig config)初始化方法;首次访问这个servletservlet对象会被创建,执行一次。 2.运行阶段: servlet...
  • 了解Servlet生命周期

    2022-05-15 16:40:08
    一.Servlet生命周期主要分为以下几个阶段: 1.加载类; 2.Servlet 初始化后调用 init () 方法; 3.Servlet 调用 service() 方法来处理客户端的请求; 4.Servlet 销毁前调用 destroy() 方法; 5.最后,Servlet...
  • Servlet生命周期分为五个阶段:加载,创建,初始化,处理客户请求,卸载,Servlet工作步骤。 加载 创建 初始化 处理客户请求 卸载 工作步骤 加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet 创建:...
  • 注: web.xml中的 / :代表项目根路径 例:http://localhost:8888/XXX/ jsp中的 / :服务器根路径 例:http://localhost:8888/ Servlet生命周期:5个阶段 加载 初始化:init(),该方法会在Servlet被加载并实例化的...
  • Servlet生命周期

    2017-09-27 09:50:25
    Servlet生命周期简介:理解一对象在程序中的存活时间,有利于提高代码质量。也是剖析每程序运行原理的关键。 一、对象的生命周期1. 创建阶段(Created) 被实例化(new)调用构造器时· Jvm为对象分配存储空间...
  • servlet生命周期

    2020-09-24 15:40:35
    主要方法: init()初始化阶段 service()处理客户端请求阶段 destroy()终止阶段 初始化阶段Servlet容器加载Servlet,加载完成后,Servlet容器会创建一个Servlet实例并调用init()方法,init()方法只会...
  • servlet生命周期及idea实现 说生命周期之前我们还是先讲讲servlet的工作原理 客户发送一请求,Servlet调用service()方法对请求进行响应,service()方法会对请求的方法进行匹配,进入相应的逻辑层,完成请求的响应...
  • Servlet生命周期分为三个阶段

    万次阅读 2012-09-13 11:23:14
    Servlet生命周期分为三个阶段:  1,初始化阶段  调用init()方法  2,响应客户请求阶段 调用service()方法  3,终止阶段 调用destroy()方法 Servlet初始化阶段:  在下列时刻Servlet容器装载Servlet: ...
  • servlet生命周期及其相关方法

    千次阅读 2019-03-20 21:26:56
    1.servlet生命周期 1)实例化,web容器实例化servlet实例 2)初始化,容器调用init()方法 3)服务,客户端请求servlet时,容器调用service()方法 4)销毁,结束服务,调用destroy()方法 2. 相关方法: ...
  • Servlet生命周期及使用小细节Servlet生命周期Servlet创建时间...Servlet的生命周期主要分为以下几个阶段:构造器—>初始化init—>请求服务service—>销毁阶段destory,我们可以通过自己写一个Servlet类去继承H
  • Servlet生命周期包括:创建、初始化、执行、销毁四大阶段。 1、创建:在启动Tomcat的过程中,会根据配置文件来决定Servlet实例何时创建,默认在第一次被访问时创建,可以通过配置web.xml中的<load-on-startup&...
  • Servlet 生命周期

    2019-06-30 20:29:28
    一个 Servlet生命周期由实例化,初始化,提供服务,销毁,被回收 几个步骤组成 实例化 当用户通过浏览器输入一个路径,这个路径对应的 Servlet 被调用的时候,该 Servlet 就会被实例化。 为 LoginServlet 显式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,085
精华内容 6,434
关键字:

servlet生命周期有几个阶段