Servlet概述

Servlet

Java Servlet前塔,用Java編寫的服務(wù)器端程序
其主要功能在于交互式地瀏覽和修改數(shù)據(jù)侵俗,生成動態(tài)Web內(nèi)容

狹義的Servlet指Java語言實(shí)現(xiàn)的一個(gè)接口
廣義的Servlet指任何實(shí)現(xiàn)了Servlet接口的類

Setvlet運(yùn)行于支持Java的應(yīng)用服務(wù)器中,原理上說,Servlet可以響應(yīng)任何類型的請求纬朝,主要用于擴(kuò)展基于HTTP協(xié)議的Web服務(wù)器

由來

Servlet是在服務(wù)器上運(yùn)行的小程序
通常,服務(wù)器采用CGI應(yīng)用程序完成一些根據(jù)用戶輸入訪問數(shù)據(jù)庫的程序掀潮。在通信量大的服務(wù)器上菇夸,Servlet執(zhí)行速度更快,各個(gè)用戶請求被激活成單個(gè)程序中的一個(gè)線程胧辽,而無需創(chuàng)建單獨(dú)的進(jìn)程峻仇,使得服務(wù)器端處理請求的系統(tǒng)開銷明顯降低

  • 實(shí)現(xiàn)過程
    Servlet主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內(nèi)容
  1. 客戶端發(fā)送請求至服務(wù)器
  2. 服務(wù)器將請求信息發(fā)送至Servlet
  3. Servlet生成響應(yīng)內(nèi)容并將其傳給服務(wù)器
  4. 服務(wù)器將響應(yīng)返回給客戶端

生命周期

  1. 客戶端請求該Servlet
  2. 加載Servlet類到內(nèi)存
  3. 實(shí)例化并調(diào)用init()方法初始化Servlet
  4. 調(diào)用Servletservice方法(根據(jù)請求方法不同邑商,調(diào)用doGet()摄咆、doPost()、doHead()人断、doPut()吭从、doTrace()、doDelete()恶迈、doOptions())
  5. destroy()
  • 客戶端發(fā)送請求至服務(wù)器
  • 服務(wù)器啟動并調(diào)用Servlet涩金,Servlet根據(jù)客戶端請求生成響應(yīng)內(nèi)容并將其傳給服務(wù)器
  • 服務(wù)器將響應(yīng)返回客戶端

編程接口

HTTPServlet使用一個(gè)HTML表單來發(fā)送和接收數(shù)據(jù)
擴(kuò)展HttpServlet類來創(chuàng)建HTTPServlet類,該類是用專門的方法來處理HTML表單的GenericServlet的一個(gè)子類
HttpServlet類包含init(), destroy(), service()等方法暇仲,init()和destroy()方法繼承而來

  1. init()方法
    在Servlet生命周期中步做,僅執(zhí)行一次init()方法,在服務(wù)器裝入Servlet時(shí)執(zhí)行奈附。也可以配置服務(wù)器全度,在啟動或者客戶端首次訪問Servlet時(shí)裝入

缺省的init()方法設(shè)置了Servlet的初始化參數(shù),并用ServletConfig對象參數(shù)來啟動配置斥滤,所有覆蓋init()方法的Servlet應(yīng)調(diào)用super.init()確保仍然執(zhí)行這些任務(wù)

  1. service()方法
    Servlet核心将鸵,缺省的服務(wù)功能是調(diào)用與HTTP請求的方法相應(yīng)的do功能
    Servlet響應(yīng)可以是:
    一個(gè)輸出流,瀏覽器根據(jù)內(nèi)容進(jìn)行解釋
    一個(gè)HTTP錯(cuò)誤響應(yīng)佑颇,重定向到另一個(gè)URL顶掉、servlet、JSP

  2. doGet()方法
    當(dāng)一個(gè)客戶通過 HTML 表單發(fā)出一個(gè) HTTP GET 請求或直接請求一個(gè) URL 時(shí)挑胸,doGet() 方法被調(diào)用痒筒。與 GET 請求相關(guān)的參數(shù)添加到 URL 的后面,并與這個(gè)請求一起發(fā)送茬贵。當(dāng)不會修改服務(wù)器端的數(shù)據(jù)時(shí)簿透,應(yīng)該使用 doGet() 方法

  3. doPost()方法
    當(dāng)一個(gè)客戶通過 HTML 表單發(fā)出一個(gè) HTTP POST 請求時(shí),doPost() 方法被調(diào)用闷沥。與 POST 請求相關(guān)的參數(shù)作為一個(gè)單獨(dú)的 HTTP 請求從瀏覽器發(fā)送到服務(wù)器萎战。當(dāng)需要修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用 doPost() 方法

  4. destroy()方法
    destroy() 方法僅執(zhí)行一次舆逃,即在服務(wù)器停止且卸裝 Servlet 時(shí)執(zhí)行該方法蚂维。典型的戳粒,將 Servlet 作為服務(wù)器進(jìn)程的一部分來關(guān)閉。缺省的 destroy() 方法通常是符合要求的虫啥,但也可以覆蓋它蔚约,典型的是管理服務(wù)器端資源。例如涂籽,如果 Servlet 在運(yùn)行時(shí)會累計(jì)統(tǒng)計(jì)數(shù)據(jù)苹祟,則可以編寫一個(gè) destroy() 方法,該方法用于在未裝入 Servlet 時(shí)將統(tǒng)計(jì)數(shù)字保存在文件中评雌。另一個(gè)示例是關(guān)閉數(shù)據(jù)庫連接树枫。
    當(dāng)服務(wù)器卸裝 Servlet 時(shí),將在所有 service() 方法調(diào)用完成后景东,或在指定的時(shí)間間隔過后調(diào)用 destroy() 方法砂轻。一個(gè) Servlet 在運(yùn)行 service() 方法時(shí)可能會產(chǎn)生其它的線程,因此請確認(rèn)在調(diào)用 destroy() 方法時(shí)斤吐,這些線程已終止或完成

  5. getServletConfig()方法
    getServletConfig() 方法返回一個(gè) ServletConfig 對象搔涝,該對象用來返回初始化參數(shù)和 ServletContext。ServletContext 接口提供有關(guān) servlet 的環(huán)境信息

  6. getServletInfo()方法
    getServletInfo() 方法是一個(gè)可選的方法和措,它提供有關(guān) servlet 的信息庄呈,如作者、版本派阱、版權(quán)

當(dāng)服務(wù)器調(diào)用 sevlet 的 service()诬留、doGet() 和 doPost() 這三個(gè)方法時(shí),均需要 “請求”和“響應(yīng)”對象作為參數(shù)颁褂」氏欤“請求”對象提供有關(guān)請求的信息傀广,而“響應(yīng)”對象提供了一個(gè)將響應(yīng)信息返回給瀏覽器的一個(gè)通信途徑
javax.servlet 軟件包中的相關(guān)類為 ServletResponse 和 ServletRequest颁独,而 javax.servlet.http 軟件包中的相關(guān)類為 HttpServletRequest 和 HttpServletResponse。Servlet 通過這些對象與服務(wù)器通信并最終與客戶端通信伪冰。Servlet 能通過調(diào)用"請求"對象的方法獲知客戶端環(huán)境誓酒,服務(wù)器環(huán)境的信息和所有由客戶機(jī)提供的信息。Servlet 可以調(diào)用“響應(yīng)”對象的方法發(fā)送響應(yīng)贮聂,該響應(yīng)是準(zhǔn)備發(fā)回客戶端的


參考文獻(xiàn):

  1. 百科servlet
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靠柑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吓懈,更是在濱河造成了極大的恐慌歼冰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耻警,死亡現(xiàn)場離奇詭異隔嫡,居然都是意外死亡甸怕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門腮恩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梢杭,“玉大人,你說我怎么就攤上這事秸滴∥淦酰” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵荡含,是天一觀的道長咒唆。 經(jīng)常有香客問我,道長释液,這世上最難降的妖魔是什么钧排? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮均澳,結(jié)果婚禮上恨溜,老公的妹妹穿的比我還像新娘。我一直安慰自己找前,他們只是感情好糟袁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躺盛,像睡著了一般项戴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上槽惫,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天周叮,我揣著相機(jī)與錄音,去河邊找鬼界斜。 笑死仿耽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的各薇。 我是一名探鬼主播项贺,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峭判!你這毒婦竟也來了开缎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤林螃,失蹤者是張志新(化名)和其女友劉穎奕删,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疗认,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡完残,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年砌滞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坏怪。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贝润,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铝宵,到底是詐尸還是另有隱情打掘,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布鹏秋,位于F島的核電站尊蚁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侣夷。R本人自食惡果不足惜横朋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望百拓。 院中可真熱鬧琴锭,春花似錦、人聲如沸衙传。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓖捶。三九已至地回,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俊鱼,已是汗流浹背刻像。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留并闲,地道東北人细睡。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像焙蚓,于是被迫代替她去往敵國和親纹冤。 傳聞我的和親對象是個(gè)殘疾皇子洒宝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 0 系列目錄# WEB請求處理 WEB請求處理一:瀏覽器請求發(fā)起處理 WEB請求處理二:Nginx請求反向代理 本...
    七寸知架構(gòu)閱讀 13,962評論 22 190
  • 簡介 Servlet(Server Applet)是Java Servlet的簡稱购公,稱為小服務(wù)程序或服務(wù)連接器,用...
    寒橋閱讀 2,256評論 0 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理雁歌,服務(wù)發(fā)現(xiàn)宏浩,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • Servlet是JavaWeb三大組件之一靠瞎,其他兩個(gè)組件為Fileter(過濾器)比庄,Listener(監(jiān)聽器)Se...
    superczb閱讀 219評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法求妹,類相關(guān)的語法,內(nèi)部類的語法佳窑,繼承相關(guān)的語法制恍,異常的語法,線程的語...
    子非魚_t_閱讀 31,631評論 18 399