实战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://www.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

主站蜘蛛池模板: 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 电机保护器-电动机综合保护器-上海硕吉电器有限公司 | 电磁铁_小型推拉电磁铁_电磁阀厂家-深圳市宗泰电机有限公司 | 烟气在线监测系统_烟气在线监测仪_扬尘检测仪_空气质量监测站「山东风途物联网」 | 箱式破碎机_移动方箱式破碎机/价格/厂家_【华盛铭重工】 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 鄂泉泵业官网|(杭州、上海、全国畅销)大流量防汛排涝泵-LW立式排污泵 | 移动机器人产业联盟官网 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | EPK超声波测厚仪,德国EPK测厚仪维修-上海树信仪器仪表有限公司 | 溶氧传感器-pH传感器|哈美顿(hamilton)| 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 硬质合金模具_硬质合金非标定制_硬面加工「生产厂家」-西迪技术股份有限公司 | 中央空调维修、中央空调保养、螺杆压缩机维修-苏州东菱空调 | 阁楼货架_阁楼平台_仓库仓储设备_重型货架_广州金铁牛货架厂 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 上海办公室装修,写字楼装修—启鸣装饰设计工程有限公司 | 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 北京公寓出租网-北京酒店式公寓出租平台 | 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 六维力传感器_三维力传感器_二维力传感器-南京神源生智能科技有限公司 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 2-羟基泽兰内酯-乙酰蒲公英萜醇-甘草查尔酮A-上海纯优生物科技有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 活性氧化铝|无烟煤滤料|活性氧化铝厂家|锰砂滤料厂家-河南新泰净水材料有限公司 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 机床主轴维修|刀塔维修|C轴维修-常州翔高精密机械有限公司 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 台湾Apex减速机_APEX行星减速机_台湾精锐减速机厂家代理【现货】-杭州摩森机电 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 |