Servlet是单例的话,为什么可以通过构造器函数来创建实例?

Servlet是单例的话,为什么可以通过构造器函数来创建实例?

在网上找了很久,基本上能确定Servlet是单例。但是我记得学习java的时候,提到单例模式的构造器是私有的,那为什么servlet即是单例又是通过构造器创建实例呢?请老师帮忙解答下。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

1、关于<load-in-startup>你的理解是正确的,如果不设置<load-in-startup>,那么servlet就会在请求的时候被创建,所以<load-in-startup>没有默认值,如果你不想在web容器启动时就创建一个servlet,就不需要添加<load-in-startup>配置即可。

2、关于你对servlet创建的理解,正如同学所说,一个类如果要被创建成实例,肯定会new一个该类,在new该类的时候会调用到该类的构造方法,那么servlet实例是谁创建的,很明显不是自己创建的,它是由web容器进行创建的,所以老师在代码中写了构造方法,并在构造方法中输出信息,只是让同学更方便理解,当web容器创建某个servlet时,它会在内部完成new 一个servlet的操作,并在控制台中输出构造信息,而不是说在该servlet中写了构造方法,就是创建实例的意思哦,整个创建过程是交给web容器来完成,祝学习愉快~

chrismorgen 2018-12-29 11:17:39

你好同学,servlet的实例不是在servlet中通过构造函数来创建的,是当servlet被装载进web容器时,由web容器中创建的该servlet的实例,该过程是web容器自动完成的,祝学习愉快~

  • 提问者 持续学习 #1
    老师你好,昨天网上找了很多相关信息,说是会根据web.xml文件的<load-on-starup>值来确定什么时候创建Servlet实例,如果是大于等于0,则由容器开启时就创建实例。否则就第一次请求提交到servlet时创建。这个对吗,那不设置这个值时,默认值应该是哪个呢?另外如果不是在构造器里创建,课程视频里生命周期那段是不是有错误?同时视频里在演示过程中有写构造器的代码,那后面提交请求的时候为什么servlet又会执行构造器里的代码呢?
    2018-12-29 12:11:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师