实战IT培训机构_黄色激情网站_IT培训班选大学生IT技术培训中心_黄色激情视频网站_中公优就业

400-650-7353
您所在的位置:首頁 > IT干貨資料 > java > 【Java基礎知識】Servlet學習之Servlet運行機制(五)

【Java基礎知識】Servlet學習之Servlet運行機制(五)

  • 發布: java培訓
  • 來源:Java培訓干貨資料
  • 2021-11-29 19:49:12
  • 閱讀()
  • 分享
  • 手機端入口

一、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

}

文章“【Java基礎知識】Servlet學習之Servlet運行機制(五)”已幫助

>>本文地址:http://m.jecan.cn/zhuanye/2021/71019.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

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

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: CPSE安博会 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 合同书格式和范文_合同书样本模板_电子版合同,找范文吧 | 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 石家庄小程序开发_小程序开发公司_APP开发_网站制作-石家庄乘航网络科技有限公司 | 贵州成人高考网_贵州成考网| 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 不锈钢电动球阀_气动高压闸阀_旋塞疏水调节阀_全立阀门-来自温州工业阀门巨头企业 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 广东机电安装工程_中央空调工程_东莞装饰装修-广东粤标建设有限公司 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 学习虾-免费的学习资料下载平台 雪花制冰机(实验室雪花制冰机)百科 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | ★塑料拖链__工程拖链__电缆拖链__钢制拖链 - 【上海闵彬】 | 不锈钢管件(不锈钢弯头,不锈钢三通,不锈钢大小头),不锈钢法兰「厂家」-浙江志通管阀 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 西门子代理商_西门子变频器总代理-翰粤百科 | 二次元影像仪|二次元测量仪|拉力机|全自动影像测量仪厂家_苏州牧象仪器 | 鲁尔圆锥接头多功能测试仪-留置针测试仪-上海威夏环保科技有限公司 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 压装机-卧式轴承轮轴数控伺服压装机厂家[铭泽机械] | 浙江建筑资质代办_二级房建_市政_电力_安许_劳务资质办理公司 | RFID电子标签厂家-上海尼太普电子有限公司| 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 比亚迪叉车-比亚迪电动叉车堆垛车托盘车仓储叉车价格多少钱报价 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 高压直流电源_特种变压器_变压器铁芯-希恩变压器定制厂家 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 |