iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaWEB中Servlet的生命周期详解
  • 639
分享到

JavaWEB中Servlet的生命周期详解

2024-04-02 19:04:59 639人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、什么是Servlet 生命周期?二、Servlet 是由谁来维护的?三、Servlet 对象 是什么时候创建的?四、测试 Tomcat 什么时候被销毁?总结一、什么是Serv

一、什么是Servlet 生命周期?

Servlet 对象什么时候被创建?

Servlet对象什么时候被销毁?

Servlet 对象创建了几个?

Servlet 对象的声明周期表示:Servlet 对象从出生到销毁的过程是怎样的

二、Servlet 是由谁来维护的?

Servlet 是由 Tomcat 服务器全权负责的,程序员无法干预。

Tomcat 又叫 WEB 容器。

我们自己 new 的 Servlet 对象 是不受 WEB 容器 管理的。

WEB 容器 自己创建的 Servlet 对象,会放到一个集合中【Map集合】,自己创建的 Servlet 是不会放到这个集合中的。这个集合保存了 请求路径 和 Servlet 对象 的对应关系。

三、Servlet 对象 是什么时候创建的?

在 Servlet 类中 写一个无参构造方法,当Tomcat 启动时 这个无参构造方法 并没有被启动,说明 Tomcat 启动时 并不会提前创建对象。

我们可以看到,当我们在浏览器中发送请求时,这个无参构造方法才会执行,说明:只有用户发送请求时,这个Servlet 对象 才会被创建。

那么可不可以让 Tomcat 提前创建对象?

                是可以的,在配置文件中 增加一行代码即可

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="Http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>StudentList</servlet-name>
        <!--完整包名-->
        <servlet-class>yangzhaoguang.servlet.StudentServlet</servlet-class>
        <!--设置Tomcat启动时,创建对象、这里必须是正整数,越小优先级越高-->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>StudentList</servlet-name>
        <!--请求路径-->
        <url-pattern>/servlet/Student</url-pattern>
    </servlet-mapping>
</web-app>

 当设置之后,Tomcat 启动时 ,无参构造方法执行了,说明创建对象成功。但是这个方法不常用,提前创建对象会耗费内存。

四、测试 Tomcat 什么时候被销毁?

我们在 新建一个模块,在模块中新建一个 AServlet 类 并 编写三个方法

 修改配置文件,并重新部署 Servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>yangzhaoguang.servlet.AServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AServlet</servlet-name>
        <!--请求路径-->
        <url-pattern>/a</url-pattern>
    </servlet-mapping>
</web-app>

 当我们启动Tomcat 时,Servlet 并没有被创建

第一次发送请求时, init 和 service 被调用。Servlet 对象被创建

当我们不停的刷新网页,每提交一次请求 service 方法就会执行一次init 方法 只会在第一次用户请求时执行一次

 当我们关闭 Tomcat 服务器时,会销毁 AServlet 的内存,destroy 方法执行了。

在执行 destroy 方法时,对象没有被销毁,这是因为 destroy 方法是 实例方法,需要对象来调用次方法。在执行之后 对象才会被销毁

Tomcat 响应请求的过程:

 1、Tomcat 的配置文件中保存 路径请求 与 Servlet 的对应关系。Tomcat 根据浏览器中的URL,分析URL找到 AServlet 类

2、通过反射机制先调用 AServlet 中的无参构造方法创建对象,执行 init 完成初始化工作,调用 service 方法处理用户的请求。【无参构造方法是在init 方法执行之前先执行】

3、当服务器关闭时,执行 destroy 方法。执行之后销毁对象。

创建对象(无参方法执行)---->  初始化(init 方法执行)---->   提供服务(service方法执行) ---->  销毁(destroy方法执行)

当 Servlet 类中 有一个 有参数构造时,会报错吗?

        会报错:500错误。一般情况下是服务端的java小程序出现了错误。

 所以在开发中,不建议自己创建构造方法。

思考一下:既然无参构造方法和 init 方法都是在Servlet对象创建时执行并只执行一次,那么 无参构造方法可以替代 init 方法吗?

        不可以,因为在Servlet 不建议构建有参数构造方法,所以 init 可以替代有参数构造方法。

总结

到此这篇关于javaweb中Servlet的生命周期详解的文章就介绍到这了,更多相关JavaWEB Servlet生命周期内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaWEB中Servlet的生命周期详解

本文链接: https://www.lsjlt.com/news/163096.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaWEB中Servlet的生命周期详解
    目录一、什么是Servlet 生命周期?二、Servlet 是由谁来维护的?三、Servlet 对象 是什么时候创建的?四、测试 Tomcat 什么时候被销毁?总结一、什么是Serv...
    99+
    2022-11-13
  • Java中Servlet的生命周期详解
    目录Web基础和HTTP协议什么是ServletServlet的生命周期Web基础和HTTP协议 ┌─────────┐ ┌──────...
    99+
    2022-11-13
  • Java中Servlet的生命周期
    目录init()service()doGet()doPost()destroy() 方法架构Servlet从创建直到毁灭的整个过程: Servlet 初始化后调用 init () 方...
    99+
    2022-11-13
  • Servlet方法生命周期及执行原理详解
    目录快速入门创建JavaEE项目实现接口中的抽象方法执行执行原理Servlet中的生命周期方法1.被创建:执行init方法,只执行一次2.提供服务:执行service方法,执行多次3...
    99+
    2022-11-12
  • React中的生命周期详解
    目录react生命周期常用的生命周期不常用的生命周完整的生命周期图react生命周期 函数组件无生命周期,生命周期只有类组件才拥有 生命周期函数指在某一时刻组件会自动调用并执行的函数...
    99+
    2022-11-13
  • Java中Servlet的生命周期是怎样的
    这篇文章主要介绍“Java中Servlet的生命周期是怎样的”,在日常操作中,相信很多人在Java中Servlet的生命周期是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Servlet的生命...
    99+
    2023-06-28
  • Vue生命周期详解
    这篇博客将会从下面四个常见的应用诠释组件的生命周期,以及各个生命周期应该干什么事 单组件的生命周期父子组件的生命周期兄弟组件的生命周期宏mixin的生命周期 生命周期:Vue 实例从...
    99+
    2022-11-13
  • rust生命周期详解
    目录rust生命周期借用检查函数中的生命周期手动声明生命周期结构体中的生命周期生命周期消除三条消除原则生命周期约束静态生命周期rust生命周期 生命周期是rust中用来规定引用的有效...
    99+
    2023-03-19
    rust生命周期
  • 详解vue生命周期
    目录为什么要理解生命周期什么是生命周期生命周期钩子函数created和mounted钩子的一些实战用法1.异步函数 2.Vue.nextTick对异步函数的结果进行操作 总结为什么要...
    99+
    2022-11-12
  • React的生命周期详解
    一、React生命周期 React 生命周期分为三种状态 1. 初始化2.更新3.销毁 初始化 1、getDefaultProps() 设置默认的props,也可以用dufault...
    99+
    2022-11-13
  • 详解uniapp的生命周期
    Uniapp作为一款跨平台应用开发框架,具有丰富的生命周期,以下是Uniapp的生命周期: 1.应用生命周期 应用生命周期是指应用程序从启动到关闭的整个过程,包括应用程序的启动、前后...
    99+
    2023-05-17
    vue uniapp uniapp生命周期
  • servlet的生命周期结构有哪些
    servlet的生命周期结构有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Servlet 生命周期:Servlet 加载--->实例化--->...
    99+
    2023-05-31
    servlet 生命周期
  • Spring 中 Bean 的生命周期详解
    目录前言1.Bean 生命周期2.代码演示总结前言 Java 中的公共类称之为 Bean 或 Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交个 Sp...
    99+
    2022-11-13
  • 《Android》Activity生命周期详解
    1、什么是Activity的生命周期? 用户在使用一个应用程序时,随着应用的启动、页面的跳转、进入后台等一些操作的发生,Activity会回调一...
    99+
    2022-06-06
    activity生命周期 activity Android
  • Android Activity生命周期详解
    Activity 的生命周期。 一、理解Activity Activity是Android程序的4大组件之一。 Activity是Android程序的表示层。程序的每一个显...
    99+
    2022-06-06
    activity生命周期 activity Android
  • Android Service生命周期详解
    引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁。在这期间,他们有时候处于激活状态,有时候处于非激活状 态;对于活动,对用户有时...
    99+
    2022-06-06
    android service service service生命周期 Android
  • Android Fragment的生命周期详解
    Fragments的生命周期        每一个fragments 都有自己的一套生命周期回调方法和处理自己的用...
    99+
    2022-06-06
    android fragment fragment Android
  • 微信APP生命周期及页面生命周期示例详解
    目录官方文档小程序的启动流程app生命周期页面的生命周期页面的生命周期(图)官方文档 ogram&jumpbackUrl=%2Fdoc%2F" rel="external n...
    99+
    2022-11-13
  • vue的生命周期钩子与父子组件的生命周期详解
    目录vue的生命周期钩子的介绍父子组件的生命周期加载渲染过程父组件更新过程子组件更新过程父子组件更新过程销毁过程代码示例created和mounted的区别vue的生命周期钩子的介绍...
    99+
    2022-11-13
    vue 生命周期 vue 父子组件生命周期
  • Vue.js的生命周期详细讲解
    本篇内容主要讲解“Vue.js的生命周期详细讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue.js的生命周期详细讲解”吧!用Vue框架,熟悉它的生命周期...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作