精华内容
下载资源
问答
  • servlet生命周期正确的是
    千次阅读
    2019-09-24 06:37:42

    A.Servlet的生命周期由Servlet实例控制

     

    B.init()方法在创建完Servlet实例后对其进行初始化,传递的参数为实现ServletContext接口的对象

     

    C.service()方法响应客户端发出的请求

     

    D.destroy()方法释放Servlet实例

     

    解答:C

     

    Servlet 生命周期就是指创建 Servlet 实例后响应客户请求直至销毁的全过程.

     

    Serlvet 生命周期的三个方法:init()–>service()–>destroy(),

     

    Servlet生命周期的各个阶段: 实例化:Servlet 容器创建

     

    Servlet 类的实例对象

     

    初始化:Servlet 容器调用 Servlet 的 init()方法

     

    服务:如果请求 Servlet,则容器调用 service()方法

     

    销毁:销毁实例之前调用 destroy()方法

    转载于:https://www.cnblogs.com/borter/p/9562496.html

    更多相关内容
  • servlet 生命周期详解

    2021-04-15 14:40:56
    servlet 生命周期详解servlet程序是由web服务器调用,web服务器实现了对servlet生命周期的管理。当你的应用加载并使用一个Servlet时,从初始化到销毁这个Servlet期间会发生一系列的事件,这些事件叫做Servlet的生命...

    servlet 生命周期详解

    servlet程序是由web服务器调用,web服务器实现了对servlet生命周期的管理。当你的应用加载并使用一个Servlet时,从初始化到销毁这个Servlet期间会发生一系列的事件,这些事件叫做Servlet的生命周期事件(或方法)。Servlet 生命周期可以归纳为:Servlet 加载--->实例化--->服务--->销毁

    周期原理图

    8e0b69dddbf90c76ce1b6c4d92ecaeb7.png

    Servlet生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求,提供服务。

    生命周期

    每个Servlet的运行都遵循如下生命周期:

    1. 创建Servlet实例

    web容器负责加载Servlet,当web容器启动时或者是在第一次使用这个Servlet时,容器会负责创建Servlet实例,但是用户必须通过部署描述符(web.xml)指定Servlet的位置,也就是Servlet所在的类名称,成功加载后,web容器会通过反射的方式对Servlet进行实例化。

    2. WEB容器调用Servlet的init()方法,对Servlet进行初始化

    在Servlet实例化之后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求前可以完成一些初始化的工作,例如,建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只能被调用一次。init()方法有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息。Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。另外,在Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可以和它的Servlet容器进行通信。无论有多少客户机访问Servlet,都不会重复执行init()。

    3. Servlet初始化之后,将一直存在于容器中,service()响应客户端请求

    1. 如果客户端发送GET请求,容器调用Servlet的doGet方法处理并响应请求

    2. 如果客户端发送POST请求,容器调用Servlet的doPost方法处理并响应请求

    3. 或者统一用service()方法处理来响应用户请求

    service()是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。要注意的是,在service()方法被容器调用之前,必须确保init()方法正确完成。容器会构造一个表示客户端请求信息的请求对象(类型为ServletRequest)和一个用于对客户端进行响应的响应对象(类型为ServletResponse)作为参数传递给service()方法。在service()方法中,Servlet对象通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。

    4. WEB容器决定销毁Servlet时,先调用Servlet的destroy()方法,通常在关闭web应用之前销毁Servlet

    destroy()仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当容器检测到一个Servlet对象应该从服务中被移除的时候,容器会调用该对象的destroy()方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久存储设备中,例如,将内存中的数据保存到数据库中,关闭数据库的连接等。当需要释放内存或者容器关闭时,容器就会调用Servlet对象的destroy()方法。在Servlet容器调用destroy()方法前,如果还有其他的线程正在service()方法中执行,容器会等待这些线程执行完毕或等待服务器设定的超时值到达。一旦Servlet对象的destroy()方法被调用,容器不会再把其他的请求发送给该对象。如果需要该Servlet再次为客户端服务,容器将会重新产生一个Servlet对象来处理客户端的请求。在destroy()方法调用之后,容器会释放这个Servlet对象,在随后的时间内,该对象会被Java的垃圾收集器所回收。

    总结

    1. 在正常情况下,Servlet只会初始化一次,而处理服务会调用多次,销毁也只会调用一次;但是如果一个Servlet长时间不使用的话,也会被容器自动销毁,而如果需要再次使用时会重新进行初始化的操作,即在特殊情况下初始化可能会进行多次,销毁也可能进行多次。

    2. 在servlet实例创建之后,在servlet能为客户请求提供服务之前,容器会在servlet实例上调用init()方法。如果你有初始化代码,就应该覆盖servlet类的init()方法,否则会调用GenericServlet的init()方法。而对应每个客户请求(无论是谁,无论是不是同一个人,只针对请求),容器都会创建一对新的请求和响应对象,创建一个新的线程/栈。任何servlet类都不会有多个实例,除非一种特殊情况(SingleThreadModel)。

    3. servlet生命周期的4个周期总结如下:

    a. 实例化以及加载servlet,new的过程

    b. 初始化init(ServletConfig)。

    c. 处理请求,调用servlet的service,doget,dopost方法将Request和Response,作为参数传递。

    d. 退出服务,调用destory方法释放资源。

    版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

    展开全文
  • 关于Tomcat的安装配置三、Servlet生命周期init() 方法service() 方法doGet() 方法doPost() 方法destroy() 方法servlet生命周期图解及步骤说明servlet生命周期代码实例演示 前言 J3 - 本文注重的是: 1、什么是...


    前言

    • J3 -
      本文注重的是:
      1、什么是Java Web Application
      2、Web Application的基本结构
      3、什么是Servlet
      4、Servlet生命周期

    Servelt介绍

    什么是Java Web Application

    Java Web Application是由一组Servelt,HTML、类,以及其他可以被绑定的资源构成。它可以实现servlet规范的servlet容器中运行。

    Java Web 应用中可以包含两大部分内容:
    1、动态资源:在服务器端具有处理能力的资源,常见的动态资源:各种类、JSP、servlet等
    2、静态资源:在服务器上没有处理能力的资源。例如各种静态文本、HTML、CSS、JavaScript,图片等
    3、web.xml文件。用于描述整个文本应用的信息

    Web Application的基本结构

    在这里插入图片描述

    什么是Servlet

    servlet是运行在服务器上的Java类。它可以接收客户端的请求,并向客户端做出响应,其流程如下图:
    在这里插入图片描述

    servlet容器:为Java应用提供运行时环境,并负责管理servlet/JSP的生命周期以及关于servlet/JSP的一些共享数据

    Tomcat介绍

    关于Tomcat的目录

    在这里插入图片描述

    关于Tomcat的安装配置

    由于Tomcat的运行需要jre的支持,所以运行tomcat必须保证jre的安装成功并配置正确即可

    关于Tomcat的安装配置

    Server.xml文件存放在:conf目录中。
    配置文件是对整个服务器起作用的,配置会影响到所有发布到这个服务器上的项目
    在这里插入图片描述

    Servlet生命周期

    Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
    1、Servlet 初始化后调用 init () 方法。
    2、Servlet 调用 service() 方法来处理客户端的请求。
    3、Servlet 销毁前调用 destroy() 方法。
    4、最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

    init() 方法

    • J3 - 白起
      init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。
      Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。
      当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

    init 方法的定义如下:

    public void init() throws ServletException {
      // 初始化代码...
    }
    

    service() 方法

    • J3 - 白起
      service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
      每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
      service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。

    service 方法的定义如下:

    public void service(ServletRequest request, 
                        ServletResponse response) 
          throws ServletException, IOException{
    }
    

    doGet() 方法

    • J3 - 白起
      GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。

    doGet 方法的定义如下:

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException {
        // Servlet 代码
    }
    

    doPost() 方法

    • J3 - 白起
      POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。

    doPost 方法的定义如下:

    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
        throws ServletException, IOException {
        // Servlet 代码
    }
    

    destroy() 方法

    • J3 - 白起
      destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
      在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。destroy 方法定义如下所示:

    destroy 方法的定义如下:

      public void destroy() {
        // 终止化代码...
      }
    

    servlet生命周期图解及步骤说明

    在这里插入图片描述
    步骤说明:

    1、客户端发送请求
    2、如果请求的是一个servlet,那么Tomcat会直接到servlet容器中去查找是否有所请求servlet实例
    3、如果有servlet实例,那么就直接调用这个实例进行处理,然后返回结果给客户端
    4、找客户端所请求的资源的对应class文件,并加载到JVM中去
    5、servlet容器会去调用这个servlet的构造方法
    6、创建好servlet的实例后,servlet容器会调用这个实例的init方法,用于初始化servlet
    7、servlet容器会调用servlet的service方法
    8、默认的service方法(图中写错了),会根据客户端请求的方法不同(get/post)来调用响应的doGet/doPost方法
    最后响应消息到客户端

    servlet生命周期代码实例演示

    代码如下(示例):

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class ServletLife extends HttpServlet{
    
    	public ServletLife() {
    		System.out.println("构造函数");
    		// TODO Auto-generated constructor stub
    	}
    
    	@Override
    	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("service......");
    		super.service(request, response);
    	}
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		System.out.println("doget方法");
    		super.doGet(req, resp);
    	}
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		System.out.println("dopost方法");
    		super.doPost(req, resp);
    	}
    
    	@Override
    	public void destroy() {
    		System.out.println("destroy方法");
    		super.destroy();
    	}
    
    	@Override
    	public void init() throws ServletException {
    		System.out.println("init方法");
    		super.init();
    	}
    
    }
    

    第一次在浏览器中采用get方式请求访问输出如下:
    在这里插入图片描述
    第二次在浏览器中采用get方式请求访问输出如下:
    在这里插入图片描述
    可以看出init方法只调用了一次进行初始化,而采用的是get方式请求了两次,所以调用了两service及都get方法,所以还是符合我们的流程结构的

    展开全文
  • Servlet生命周期

    2022-02-28 15:43:37
    Servlet生命周期有四个阶段: (1)加载和实例化: Servlet由容器创建,实例化后就进入了生命周期阶段。 (2)初始化Servlet: 在这个阶段会调用init()方法,这个方法只会被调用一次,我们可以通过Web...

    Servlet的生命周期有四个阶段:

    (1)加载和实例化:

    Servlet由容器创建,实例化后就进入了生命周期阶段。

    (2)初始化Servlet:

    在这个阶段会调用init()方法,这个方法只会被调用一次,我们可以通过WebServlet注解的loadInStartup属性唉,让Servlet在被容器创建的时候初始化

    (3)请求处理阶段:

    在这个阶段,会调用service()方法,容器会根据请求中的URL找到正确的Servlet,然后创建两个对象,HttpServletRequest和HttpServletResponse,在创建一个新的线程,在线程中调用service()方法。

    (4)销毁和卸载Servlet

    当容器决定不再需要Servlet实例时,它将在Servlet实例上调用destroy()方法,Servlet在该方法中释放资源

    package com.zhengshanming;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import java.io.IOException;
    
    @WebServlet(urlPatterns = "/aa", loadOnStartup = 1)
    public class Servlet2 implements Servlet {  //继承Servlet接口
    
        /*
         * 初始化方法
         * 1.调用时机:默认情况下,Servlet第一次被访问时调用
         *            loadInServlet:
         * 2、调用次数:1次
         * */
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
            System.out.println("init....");
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
        /*
         * 提供服务
         * 调用时机:每一Servlet被访问时,调用
         * 调用次数:多次
         * */
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            //service方法对每个客户请求的资源器调用一次该方法,它允许Servlet为请求提供响应
            System.out.println("Servlet Hello word!");
            //根据请求的方式不同,进行分别比较
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            //1.获取方式
            String method = request.getMethod();
            //2.判断
            if ("GET".equals(method)) {
    
            } else if ("POST".equals(method)) {
    
            }
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        /*
         * 销毁方法
         * 调用时机:内存释放或者服务器关闭时,Servlet对象被销毁,调用
         * 调用次数:1次
         * */
        @Override
        public void destroy() {
            System.out.println("destroy");
        }
    }
    

    展开全文
  • JSP生命周期 ,Servlet生命周期

    千次阅读 2016-05-27 17:27:11
    JSP生命周期包括以下阶段 解析阶段:Servlet容器解析JSP文件代码,如果有语法错误,就会向客户端返回错误信息 翻译阶段:Servelet容器把JSP文件翻译成Servelet源文件 编译阶段:Servelet容器编译Servelet源文件,...
  • 下列有关Servlet生命周期,说法不正确的是? 正确答案: Servlet生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载
  • Servlet生命周期

    2020-11-07 15:43:43
    Servlet生命周期是由Servlet容器(即web服务器)来控制的,通过简单的概括可分为四步:Servlet类加载–>实例化Servlet–>Servlet提供服务–>销毁Servlet (1)Servlet类加载,该阶段仅执行一次。 (2)...
  • 正确答案: AA 在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例B 在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法C 在销毁阶段,...
  • 文章目录一、加载和实例化Servlet二、Servlet生命周期 一、加载和实例化Servlet 1.使用Class.forName()对其加载,调用不带参数的构造方法进行实例化; 2.创建实例后,就进入了生命周期阶段。 二、Servlet生命周期...
  • 一、Servlet生命周期 Servlet运行在Servlet容器中,其生命周期由容器全盘控制。容器会创建请求和响应对象、为Servlet分配一个线程、调用servlet的service()方法,并传递请求和响应对象的引用作为参数。 当应用加载...
  • 原文地址:Servlet执行流程和生命周期阶段的方法 执行流程 客户端请求servlet并提交给服务器。 服务器在web.xml中寻找对应的servlet地址(<url-pattern></url-pattern>标签内容)和...
  • 关于JSP生命周期的叙述,下列哪些为真? A. JSP会先解释成Servlet源文件,然后编译成Servlet类文件 B. 每当用户端运行JSP时,jsp init()方法都会运行一次 C. 每当用户端运行JSP时,jsp service()方法都会运行一次 D. ...
  • Servlet生命周期 首先加载servlet的class,实例化servlet,然后初始化servlet调用init()的方法,接着调用服务的service的方法处理doGet和doPost方法,最后还有容器关闭时候调用destroy 销毁方法。 1.被创建:执行...
  • servletservlet的执行顺序和生命周期

    千次阅读 2017-11-01 17:06:38
    servlet的执行顺序究竟是什么样的? 1、用户点击提交,将请求发送给servlet 2、服务器端收到响应后,在web.xml文件的<servlet-mapping>标签中寻找与请求地址相同的url地址 3、找到所匹配的url地址后,再在...
  • Servlet对象运行在Servlet容器中,Servlet生命周期由容器管理(Servlet容器的基本思想是在服务器端使用Java来动态生成网页)。 (一)Servlet对象生命周期Servlet一生都做了什么事)1.加载和实例化 2.初始化 3....
  • Servlet生命周期和工作原理

    万次阅读 2017-09-28 10:24:12
    Servlet生命周期分为三个阶段: 1:初始化阶段,调用init()方法 2:响应客户请求阶段,调用service()方法 3:终止阶段,调用destory()方法1:Servlet的生命周期指的是 Servlet从被Web服务器加载到它被销毁的整个...
  • Servlet-生命周期

    2020-02-07 22:49:42
    Servlet生命周期可以定义为从创建到销毁的整个过程。以下是servlet遵循的路径: 通过调用init()方法初始化servlet 。 Servlet调用service()方法来处理客户端的请求。 通过调用destroy()方法来终止servlet 。 ...
  • servlet生命周期

    2017-06-16 22:46:49
    servlet生命周期
  • Servlet生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。 Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet 通过调用init ()...
  • 之前有学过Servlet,对于Servlet的基本原理也大致有一些...一、Servlet生命周期 Servlet是在服务器上运行的的小程序,我们自己编写的Servlet类都是继承自HttpServlet类的,所以也复写了HttpServlet的主要方法:init
  • 2.掌握Servlet生命周期。 二、实验内容和主要步骤: 1.在IDE中编写一个Servlet类LifeCycleServlet,重写init()方法,service()(或者doGet(),doPost())方法,destroy()方法。 2.正确配置该Servlet类...
  • Servlet生命周期函数

    千次阅读 2018-11-24 00:01:31
    servlet的作用是什么?   我们都知道网页分为静态网页(static web)和动态网页(dynamic web)之分。静态网页是只能干瞪眼看着的,而动态网页是可以进行客户端(浏览器)和服务器的交互,比如公司实习生的最佳练...
  • 1、概念 Servlet是一个java编写的程序,此...每一个自定义的Servlet都必须实现Servlet的接口,其中涉及到比较重要的三个方法,分别是init(), service(), destroy(), 一般来说,我们定义Servlet的时候只需要继承HTTP
  • Servlet对象的生命周期 1.什么是生命周期? 表示一个Java对象从最初创建到最终被销毁,所经历的过程 2.Servlet对象的生命周期是谁来管理的?程序员可以干涉吗? Servlet对象的生命周期javaweb程序员是无权干涉的,...
  • 本文主要讲述了Servlet的入门编程,如何在MyEclipse中修改Servlet默认模板,Servlet生命周期理论,url-pattern的三种写法以及访问优先级,绝对路径与相对路径问题,网站的站点根目录,ServletConfig和...
  • 静态网页和动态网页、servlet容器与Web Server关系、Servlet Container工作过程、Servlet生命周期(init、service、destroy)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,627
精华内容 13,450
关键字:

servlet生命周期正确的是