恶魔老师你别拽百度云-cobaltlv.com

google seo -> telegram: @ehseo6

">Newsnet 2022-09-29 23:06
  • home  >   /兴安盟聘刮幌文化传媒有限公司  >   恶魔老师你别拽百度云
  • 强bao小说百度云 挠校花的脚百度
    古代小说经典的百度云 兰州百度seo排名优化
    百度手机输入法词库 how about 恶魔老师你别拽百度云?
    What's the 恶魔老师你别拽百度云 phone number? What is 恶魔老师你别拽百度云 contact information ?
    Online consultation 恶魔老师你别拽百度云 The picture of the 恶魔老师你别拽百度云
    恶魔老师你别拽百度云of the video Is 恶魔老师你别拽百度云 for real ?
    恶魔老师你别拽百度云's website A map of 恶魔老师你别拽百度云
    恶魔老师你别拽百度云 of tiktok 恶魔老师你别拽百度云music
    恶魔老师你别拽百度云 of news 恶魔老师你别拽百度云app
    恶魔老师你别拽百度云company Customer service of 恶魔老师你别拽百度云 company

    在一起就好全集百度云『网址:ff00.co』F2F4Y5L8-2022-09-29 23:06

    百度口碑『网址:ff00.co』F2F4Y5L8-2022-09-29 23:06

    您所在的位置:首页 > IT干货资料 > java > Servlet学习之(五)Servlet运行机制

    百度公司内部控制『网址:ff00.co』F2F4Y5L8-2022-09-29 23:06

    一、Servlet运行机制

    Servlet是运行在Servlet容器中的服务器端的用来响应用户请求的服务器小程序,它的生命周期由Servlet容器负责管理。

    Servlet在Servlet容器中,以单例模式存在,即:在Servlet生命周期中,Servlet容器只创建一个Servlet对象,所有的客户请求都使用这一个Servlet对象来响应。

    当用户请求到达时,Servlet容器解析请求,检查内存中是否已存在用户要访问的Servlet对象;若存在,则直接使用该Servlet对象处理用户请求;若不存在,则加载Servlet,创建Servlet对象,并实例化、初始化,然后使用这个Servlet对象处理用户请求。

    在Servlet整个生命周期中,只实例化和初始化一次,即:只有一个Servlet实例对象为客户请求提供服务。

    Servlet以单例模式运行,即使有多个用户同时访问Servlet时,Servlet容器中也只有一个Servlet实例对象存在。Servlet容器通过Servlet对象调用service()服务方法时,采用多线程的方式使用Servlet对象。即:Servlet容器会为每一个用户请求创建一个线程,由线程调用Servlet的service()方法为用户请求提供服务。

    在Servlet容器中,用一个线程池来管理使用Servlet对象的多个线程,线程池在初始化时,会创建一定数量的线程对象放在池子中,当需要时,直接获取线程对象并使用;使用后,线程对象归还线程池;以避免频繁创建线程、销毁线程对象,从而提高Servlet容器的性能。

    下图描述了Servlet的请求与响应过程:客户机向WEB服务器发送请求,WEB服务器收到请求之后,转发给Servlet容器,Servlet容器创建HttpServletRequest和HttpServletResponse两个对象,分别封装请求数据和响应数据,并将它们传给线程池中分配的线程,该线程访问Servlet处理用户请求,处理完毕,将结果返回Servlet容器,线程归还线程池;最后,WEB服务器负责将响应结果发送回客户机。

    二、Servlet生命周期

    在Java中,任何对象都有生命周期。

    Servlet生命周期是指Servlet实例创建到Servlet实例销毁的过程。按照功能的不同,大致可以将Servlet的生命周期分为三个阶段:Servlet实例创建与初始化阶段、运行阶段、销毁阶段。

    在Servlet生命周期中,每个阶段用不同的方法,完成各自的任务。

    初始化阶段:调用Servlet的构造器和init()方法进行实例化和初始化。

    运行阶段:调用Servlet的service()方法处理客户请求。

    销毁阶段:调用Servlet的destroy()方法结束Servlet的运行。

    最后,Servlet对象由Java虚拟机JVM的垃圾回收器进行垃圾回收。

    1、初始化阶段

    Servlet实例是Servlet容器创建的,并且在整个Servlet生命周期中,只创建一个。

    Servlet容器会根据Servlet在web.xml配置文件中的参数值,或者@WebServlet注解中的loadOnStartup属性值,决定在哪个时候创建Servlet实例。

    如果参数值或loadOnStartup属性值大于等于0,则Servlet容器在应用程序启动时,加载Servlet字节码文件,并调用Servlet的构造器和init()方法创建Servlet实例;否则,在客户第一次访问Servlet时,Servlet容器调用Servlet的构造器和init()方法创建Servlet实例。

    在整个Servlet生命周期中,Servlet对象只实例化和初始化一次,init()方法只被调用一次。

    init()代码示例如下:

    public void init(ServletConfig arg0) throws ServletException {

    // TODO Auto-generated method stub

    }

    2、运行阶段

    运行阶段是Servlet生命周期中最重要的一个阶段,在这个阶段,Servlet容器会反复调用Servlet的service()方法处理客户请求。

    当Servlet容器接收到用户请求后,会为每一个用户请求创建代表请求的ServletRequest对象和代表响应的ServletResponse对象,在调用service()方法处理用户请求时,将它们作为参数传递给Servlet的service()方法。service()方法通过ServletRequest对象,获取客户请求信息;通过ServletResponse对象,生成响应结果。

    在整个Servlet生命周期中,对于Servlet的每一次用户访问请求,Servlet容器都会调用一次Servlet的service()方法,并且创建新的ServletRequest对象和ServletResponse对象,即:service()方法在 Servlet的整个生命周期中,会被多次调用。

    service()代码示例如下:

    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {

    // TODO Auto-generated method stub

    arg1.setContentType("text/html; charset=utf-8");

    arg1.getWriter().println("这是通过实现Servlet接口创建的Servlet程序");

    }

    3、销毁阶段

    当WEB服务器关闭(Servlet容器也就终止了)或WEB应用程序被移出Servlet容器时,Servlet会随着WEB应用程序的关闭而销毁。

    Servlet容器调用Servlet的destroy()方法,销毁Servlet对象,释放Servlet对象占用的资源。

    在整个Servlet生命周期中,Servlet对象只销毁一次,于是,destroy()方法只被Servlet容器调用一次。

    特别地:Servlet对象一旦创建,就一直驻留在内存中等待客户的访问,直到WEB服务器关闭或WEB应用程序被移出Servlet容器时,Servlet对象才会被销毁。

    destroy()代码示例如下:

    public void destroy() {

    // TODO Auto-generated method stub

    }

    文章“Servlet学习之(五)Servlet运行机制”已帮助

    >>本文地址:http://www-ujiuye-com.cobaltlv.com/zhuanye/2021/71019.html

    THE END  

    声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

    领取零基础自学IT资源

    (内含学习路线+视频教程+项目源码)

    涉及Java、Web前端、UI设计、软件测试、Python等多个IT热门方向

    打开微信扫一扫即可领取哦~

    1 您的年龄

    2 您的学历

    3 您更想做哪个方向的工作?

    获取测试结果
    • 大前端大前端
    • 大数据大数据
    • 互联网营销互联网营销
    • JavaJava
    • Linux云计算Linux
    • Python+人工智能Python
    • 嵌入式物联网嵌入式
    • 全域电商运营全域电商运营
    • 软件测试软件测试
    • 室内设计室内设计
    • 平面设计平面设计
    • 电商设计电商设计
    • 网页设计网页设计
    • 全链路UI/UE设计UI设计
    • VR/AR游戏开发VR/AR
    • 网络安全网络安全
    • 新媒体与短视频运营新媒体
    • 直播带货直播带货
    • 智能机器人软件开发智能机器人
     

    快速通道fast track

    近期开班时间TIME

    重庆体彩网网站网址导航 福彩幸运快三全天计划数据 南宫傲排列三17080 众彩网财神预测大乐透 双色球14140预测
    大乐透一区和二区的和差 排列五历史全部开奖号 17155大乐透预测 大乐透红球预测号码 广东十一选五任选
    复式双色球预测号码是多少 第二神双色球18006 谁有福彩3d近30期中奖号 山东十一选五实战技巧保盈 双色球最新评论
    四川体彩开奖结果 查询 福彩3d中间数大彩 排列五最精准专家推荐号 pc蛋蛋自动投注方式 18002大乐透中奖号码