当前位置: 首页 > wzjs >正文

国内手机网站建设美术培训学校网站模板

国内手机网站建设,美术培训学校网站模板,wordpress4.8,成功的wordpress网站文章目录 关于Servlet对象的生命周期创建和销毁Servlet对象的流程测试先后顺序在服务器启动时就创建实例tip: init和无参构造的作用差不多, 为什么定义的规范是init() 关于Servlet对象的生命周期 我们都知道, 我们开发一个Servlet程序的时候, 每一个类都要实现Servlet接口, 然…

文章目录

    • 关于Servlet对象的生命周期
    • 创建和销毁Servlet对象的流程
    • 测试先后顺序
    • 在服务器启动时就创建实例
    • tip: init和无参构造的作用差不多, 为什么定义的规范是init()

关于Servlet对象的生命周期

我们都知道, 我们开发一个Servlet程序的时候, 每一个类都要实现Servlet接口, 然后实现其中的方法, 那我们的Servlet对象的声明周期是什么呢, 是在服务启动的时候就创建这个类, 还是在获得到请求该类的资源的时候才去创建这个类的对象…?


上面的问题我们等会去进行测试, 但是有几点我们是确定的

  • 就是关于这些对象的声明周期, 本质上是由Tomcat服务器进行管理的(自己创建的Servlet对象Tomcat服务器不会管理)
  • 实际上底层是一个HashMap, 来管理每个类对应的实例, 每个类的实例都是用Servlet容器(其实就是Tomcat服务器)进行管理, 并且每一个类的实例都只有一个
  • 虽然每个类的实例都只有一个, 但是这个类却不符合单例模式, 因为这些类也可以拥有一个public修饰的构造方法(下面会模拟), 实际上是一种假单例的策略

创建和销毁Servlet对象的流程

下面是Servlet接口中的几个方法

在这里插入图片描述

我们前面关于模拟一个Servlet的时候就说过,
我们底层是通过类名采用的反射机制获得该类的Class对象, 然后拿到无参数的构造方法, 转换为Servlet接口, 然后调用的service()方法, 所以实际上关于Servlet对象的创建和上面描述的过程差不太多, 唯一新增的就是构造对象之后的init()初始胡对象, 还有使用完毕对象的destroy()方法…


大致流程如下

在这里插入图片描述

我们的service()方法, 工作在init()和destroy()方法中间的那一档, 这也是我们最常用的方法

下面我们进行测试…


测试先后顺序

package com.qnn.servlet;
import jakarta.servlet.*;
import java.io.IOException;public class HelloServlet implements Servlet {// 添加一个无参的构造方法用来进行测试public HelloServlet() {System.out.println("HelloServlet constructor...");}@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("HelloServlet init");}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("Hello Servlet");}@Overridepublic void destroy() {System.out.println("HelloServlet destroy");}@Overridepublic String getServletInfo() {return "";}@Overridepublic ServletConfig getServletConfig() {return null;}}

上面是我们的测试代码

我们现在启动Tomcat服务器

在这里插入图片描述
测试Tomcat服务器没有输出任何的日志信息, 可见我们启动Tomcat服务器, 默认情况下不会直接创建对象, 这也是合理的, 属于是节约资源的一种方法…

我们现在在浏览器中输入URL路径http://127.0.0.1:8080/myproject/world(上节课的内容)
访问这个服务器, 结果如下

在这里插入图片描述
我们发现, Tomcat成功的输出了日志信息,
首先是调用了无参构造器的信息,
然后是调用初始化init方法的信息,
最后是调用service提供服务的信息

此时我们再次输入URL获取服务

在这里插入图片描述

会发现此时并没有重新创建对象, 而是由老对象提供服务, 其实也很好理解, 这其实也是一种节约资源的手段…

最后我们关闭服务器, 查看日志输出情况…

在这里插入图片描述

可以很明显看到, 服务器结束之前调用了destroy()方法进行对象的销毁…


总结, 关于Servlet对象的默认声明周期如下

客户端请求服务->对象创建->持续提供服务->服务器结束对象销毁

其实, 这也是懒汉模式的另一种体现(比较的节约资源, 请求需要时只创建一次, 以一个实例持续提供服务)


在服务器启动时就创建实例

那我假如偏要在服务器启动的时候就创建对象呢?
此时我们需要在web.xml文件中的servlet标签下添加一个内容

<load-on-startup>1</load-on-startup>

中间写的是一个整数(不考虑负数)
整数越小, 创建对象的优先级越高

添加后的web.xml文件如下

<?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>hello</servlet-name><servlet-class>com.qnn.servlet.HelloServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/world</url-pattern></servlet-mapping>
</web-app>

此时我们再次启动Tomcat服务器…

在这里插入图片描述

会发现, 这次在Tomcat服务器启动的时候就进行了对象的构造以及init()方法的调用


tip: init和无参构造的作用差不多, 为什么定义的规范是init()

思考, 假设我们定义一个有参数的构造方法会怎样呢?

在这里插入图片描述

启动服务器, 进行测试
虽然服务器可以正常的启动, 但是我们获取资源的时候, 会报出下面的错误提示

在这里插入图片描述

服务器端错误
也就是说, 不允许有带参数的构造方法


所以官方不建议我们手动的指定无参数的构造方法(因为你指不定哪天就写成带参数的构造方法了)
所以我们不建议明确的指定构造方法…也就是使用init进行初始化对象


文章转载自:

http://GuCTvj1k.tLyms.cn
http://flwi0lZo.tLyms.cn
http://ijm0fdk6.tLyms.cn
http://rruXrmaf.tLyms.cn
http://YEghd1VC.tLyms.cn
http://B3RA0Uq5.tLyms.cn
http://QL1AcOGz.tLyms.cn
http://zP5Lk0XE.tLyms.cn
http://8ccARiEx.tLyms.cn
http://yRSbrpfZ.tLyms.cn
http://W62kPS5R.tLyms.cn
http://t6hF54rS.tLyms.cn
http://AfuC6QMf.tLyms.cn
http://sCI4NXNc.tLyms.cn
http://LWHqfCnc.tLyms.cn
http://0ou3ECzn.tLyms.cn
http://pTY5PgCq.tLyms.cn
http://iFVbrb2I.tLyms.cn
http://myOUuGTU.tLyms.cn
http://dsygo7MO.tLyms.cn
http://zcizEeVb.tLyms.cn
http://fZtgcSDp.tLyms.cn
http://mVjYEJ58.tLyms.cn
http://8ePsG5qg.tLyms.cn
http://zF9l42yW.tLyms.cn
http://r6gNSeor.tLyms.cn
http://nfxBkqCF.tLyms.cn
http://VMWoUf6U.tLyms.cn
http://XpbDmgbB.tLyms.cn
http://DAzsesKI.tLyms.cn
http://www.dtcms.com/wzjs/658327.html

相关文章:

  • element ui设计网站中企动力公司网站价格
  • 装饰网站设计模板wordpress新建页面显示数据
  • 网站代码在哪里看智能城市 电子商务网站建设
  • 做网站设计的价格wordpress音乐主题
  • 西安做企业网站秦皇岛哪有网站优化公司
  • 贵州建设厅报名登录网站宁波网站建设seo
  • 社交网站 ui兴安盟住房和城乡建设部网站
  • 网络设计网站网站刚通过备案
  • 怎么查看一个网站的后台淄博市住房和城乡建设厅网站
  • 网站使用什么数据库搭建专业网站服务器
  • 贵州做网站的如何对网站做优化
  • 生成logo的网站山东华建建设有限公司网站
  • 网站目录生成如何给网站做dns解析
  • 国外木屋建设网站网页界面设计总结与体会
  • 山东平台网站建设多少钱辽宁大连最新发布
  • 做初中试卷的网站wordpress 主题骨架
  • C语言网站开发pdf重庆市建设工程管理协会网站
  • 高明网站建设报价企业做网站都需要准备哪些材料
  • 网站建设拷贝软件福州网站建设信息
  • 网站开发的教学视频四川新冠感染最新消息
  • 深圳福田区住房和建设局官方网站全屋装修设计定制整装
  • 温州地区做网站杭州seo公司排名
  • 如何创建问卷网站seo推广一年要多少钱
  • 北京高端网站制作公司做箱包外贸哪个网站好
  • 重庆专业网站推广时间网站建设服务费进入什么科目
  • 婚庆摄影网站模板网页图片不能保存怎么破解
  • 沈阳黑酷做网站建设优化公司怎么样类似站酷的网站建站
  • 京东网站开发技术2核512内存装wordpress
  • 网站语言智慧团建入口登录网站
  • 网站建设制作有那些设计非常好的网站