Servlet概述
JSP的前身就是Servlet。因此我們樂(lè)意清楚的知道Servlet是JSP的基礎(chǔ)扔仓。
Servlet是運(yùn)行在Web服務(wù)器或應(yīng)用服務(wù)器上的程序芜赌,它是作為來(lái)自Web瀏覽器或其他HTTP客戶(hù)端的請(qǐng)求和HTTP服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序之間的中間層其爵。
Servlet就像任何其他的Java類(lèi)一樣已經(jīng)被創(chuàng)建和編譯冒冬。
Servlet在Web應(yīng)用程序中的位置
Servlet生命周期
Servlet生命周期可被定義為從創(chuàng)建直到銷(xiāo)毀的整個(gè)過(guò)程。servlet生命周期階段包括初始化摩渺、加載简烤、實(shí)例化、服務(wù)和銷(xiāo)毀摇幻。
用戶(hù)訪(fǎng)問(wèn)横侦,發(fā)現(xiàn)沒(méi)有Servlet對(duì)象挥萌,先實(shí)例一個(gè)對(duì)象,然后調(diào)用init()方法進(jìn)行初始化枉侧,然后調(diào)用service()進(jìn)行交互引瀑,最后關(guān)閉調(diào)用destroy()方法進(jìn)行摧毀。
- init()方法
init()方法被設(shè)計(jì)成只調(diào)用一次榨馁。它在第一次創(chuàng)建Servlet時(shí)被調(diào)用憨栽,在后續(xù)每次用戶(hù)請(qǐng)求時(shí)不再調(diào)用。 - service() 方法
service()方法是執(zhí)行實(shí)際任務(wù)的主要方法翼虫。Servlet容器(即Web服務(wù)器)調(diào)用service()方法來(lái)處理來(lái)自客戶(hù)端(瀏覽器)的請(qǐng)求屑柔,并把格式化的響應(yīng)寫(xiě)回給客戶(hù)端。 - destroy()方法
destroy()方法只會(huì)被調(diào)用一次珍剑,在Servlet生命周期結(jié)束時(shí)被調(diào)用掸宛。destroy()方法可以讓Servlet關(guān)閉數(shù)據(jù)庫(kù)連接、停止后臺(tái)線(xiàn)程招拙、把Cookie列表或點(diǎn)擊計(jì)數(shù)器寫(xiě)入到磁盤(pán)唧瘾,并執(zhí)行其他類(lèi)似的清理活動(dòng)。
Servlet 容器處理由多個(gè)線(xiàn)程產(chǎn)生的多個(gè)請(qǐng)求迫像,每個(gè)線(xiàn)程執(zhí)行一個(gè)單一的Servlet實(shí)例的service()方法劈愚。
Servlet加載
在下列時(shí)刻Servlet容器裝載Servlet:
- Servlet容器啟動(dòng)時(shí)自動(dòng)裝載某些Servlet瞳遍,實(shí)現(xiàn)它只需要在web.xml文件中的<Servlet></Servlet>之間添加如下代碼:<loadon-startup>1</loadon-startup>闻妓,或者在注解中加上loadOnStartup=1,數(shù)字越小表示優(yōu)先級(jí)越高掠械。
- 在Servlet容器啟動(dòng)后由缆,客戶(hù)首次向Servlet發(fā)送請(qǐng)求。
- Servlet類(lèi)被更新后猾蒂,重新加載Servlet均唉。
Servlet獲取JSP九大內(nèi)置對(duì)象
Servlet路徑
- 請(qǐng)求重定向
response.sendRedirect(request.getContextPath() +"/test.jsp"); - 服務(wù)器內(nèi)部轉(zhuǎn)發(fā)
request.getRequestDispatcher("/test.jsp").forward(request.response)
設(shè)置初始化數(shù)據(jù)
設(shè)置初始化數(shù)據(jù)
設(shè)置兩個(gè)變量存放數(shù)據(jù),并用getter和setter方法進(jìn)行了封裝
調(diào)用初始化方法的時(shí)候獲取初始化數(shù)據(jù)
打印初始化數(shù)據(jù)
運(yùn)行顯示出結(jié)果