Servlet躏啰、ServletConfig趁矾、ServletContext生命周期

servlet:

  • 一個(gè)類繼承了HTTPServlet,重寫了方法就成為了一個(gè)組件给僵。
  • 運(yùn)行在應(yīng)用服務(wù)器上的代碼->servlet
  • 兩種創(chuàng)建方法:請(qǐng)求毫捣、web.xml。
  • servlet路徑必須“/”開頭帝际,接收客戶端請(qǐng)求蔓同。
  • 繼承httpservlet 需要重寫doPost和doGet
  • tomcat運(yùn)行servlet,幫我們調(diào)用doPost或doGet方法蹲诀,tomcat傳request和response對(duì)象
  • tomcat會(huì)為每個(gè)請(qǐng)求創(chuàng)建一個(gè)線程斑粱,每個(gè)線程用同一個(gè)對(duì)象。
  • tomcat默認(rèn)在web-inf下的lib目錄下找相關(guān)包脯爪。

servlet生命周期:

  • 初始化階段:
  • 加載servlet類
  • 創(chuàng)建servletconfig對(duì)象 此對(duì)象包含初始化配置信息则北,并與ServletContext對(duì)象關(guān)聯(lián)矿微。
  • 創(chuàng)建servlet對(duì)象
  • 調(diào)用init(ServletConfig sc) :容器在創(chuàng)建好servlet對(duì)象后調(diào)用該方法進(jìn)行初始化。使servlet與ServletConfig對(duì)象關(guān)聯(lián)尚揣。ServletContext對(duì)象也產(chǎn)生關(guān)聯(lián)涌矢,可以直接getServletContext(),進(jìn)入此初始化階段有兩種情況:1.客戶端第一次發(fā)出對(duì)該servlet的請(qǐng)求快骗;2.在web.xml中設(shè)置了<load-on-startup>元素娜庇。
  • 運(yùn)行階段:
  • 創(chuàng)建req和res對(duì)象。
  • 調(diào)用service(Request req,Response res) 負(fù)責(zé)響應(yīng)客戶請(qǐng)求(根據(jù)路徑訪問指定servlet)方篮,執(zhí)行doGet或doPost方法名秀,返回響應(yīng),返回響應(yīng)后銷毀res和req對(duì)象藕溅。
  • 銷毀階段
  • destroy 釋放servlet占用的資源匕得,關(guān)閉應(yīng)用服務(wù)器時(shí)自動(dòng)調(diào)用該方法。
  • servlet容器銷毀ServletConfig對(duì)象巾表。
  • getServletConfig() 返回ServletConfig對(duì)象耗跛。包含了servlet初始化信息。
  • getServletInfo() 返回一個(gè)字符串攒发,包含servlet創(chuàng)建者版本等信息。

ServletConfig:

  • 初始化:

servlet容器創(chuàng)建一個(gè)servlet對(duì)象會(huì)為這個(gè)servlet對(duì)象創(chuàng)建一個(gè)ServletConfig對(duì)象晋南,該對(duì)象中包含了這個(gè)Servlet的初始化參數(shù)惠猿;在調(diào)用init(config)方法時(shí)傳給servlet對(duì)象,ServletConfig并同時(shí)與ServletContext對(duì)象建立關(guān)聯(lián)

  • 初始化參數(shù)的設(shè)置:

在web.xml配置servlet時(shí)通過<init-param>設(shè)置初始化參數(shù)负间。代碼如下:

<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.neuedu.servlet.LoginServlet</servlet-class>
    <init-param>
        <param-name>color</param-name>
        <param-value>blue</param-value>
    </init-param>
    <init-param>
            <param-name>size</param-name>
            <param-value>15</param-value>
    </init-param>
</servlet>
  • 常用方法:

.getInitParameter(String name);
.getInitParameterNames();
.getServletContext();
.getServletName();

ServletContext:

  • 初始化:

servlet容器在啟動(dòng)一個(gè)web應(yīng)用時(shí)就會(huì)創(chuàng)建一個(gè)ServletContext對(duì)象:一個(gè)web應(yīng)用只有一個(gè)ServletContext對(duì)象偶妖,這個(gè)web應(yīng)用下的所有servlet共享同一個(gè)ServletContext對(duì)象,通過這個(gè)ServletContext對(duì)象來訪問此servlet容器內(nèi)(服務(wù)器政溃,包括多個(gè)web應(yīng)用)的各種資源趾访。

  • 常用方法:
  • 用于在本web應(yīng)用下存取共享數(shù)據(jù)的方法:
    .setAttribute(String name,Object object);
    .getAttribute(String name);
    .getAttributeNames();
    .removeAttribute(String name);
  • 訪問當(dāng)前web應(yīng)用的資源:
    .getContextPath();返回當(dāng)前web應(yīng)用的URL入口;
    .getInitParameter(String name);返回web應(yīng)用內(nèi)指定的>初始化參數(shù)值董虱。
    .getInitParameterNames();返回web應(yīng)用內(nèi)所有初始化參數(shù)名扼鞋。
    .getServletContextName();返回web應(yīng)用的名字。
    .getRequestDispatcher(String path);返回一個(gè)向其他web組件轉(zhuǎn)發(fā)請(qǐng)求的-RequestDispatcher對(duì)象
  • 生命周期:

同web應(yīng)用的生命周期愤诱。是最早被創(chuàng)建云头,最晚被銷毀的對(duì)象。

  • ServletContext監(jiān)聽器
  • 通過ServletContextListener監(jiān)聽器對(duì)ServletContext對(duì)象進(jìn)行監(jiān)聽淫半,也就是對(duì)web應(yīng)用進(jìn)行監(jiān)聽溃槐。
  • serlvet容器啟動(dòng)web應(yīng)用會(huì)觸發(fā)ServletContextEvent事件,該事件由ServletContextListener監(jiān)聽器進(jìn)行處理科吭,該接口中定義兩種方法:
  • contextInitalized(ServletContextEvent sc);啟動(dòng)web應(yīng)用調(diào)用該方法昏滴,在此之后初始化filter猴鲫,再初始化特定servlet。
  • contextDestroyed(ServletContextEvent sc);關(guān)閉web應(yīng)用時(shí)調(diào)用該方法谣殊,在銷毀servlet和filter之后才調(diào)用此方法拂共。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蟹倾,隨后出現(xiàn)的幾起案子匣缘,更是在濱河造成了極大的恐慌,老刑警劉巖鲜棠,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肌厨,死亡現(xiàn)場離奇詭異,居然都是意外死亡豁陆,警方通過查閱死者的電腦和手機(jī)柑爸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盒音,“玉大人表鳍,你說我怎么就攤上這事∠榉蹋” “怎么了譬圣?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雄坪。 經(jīng)常有香客問我厘熟,道長,這世上最難降的妖魔是什么维哈? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任绳姨,我火速辦了婚禮,結(jié)果婚禮上阔挠,老公的妹妹穿的比我還像新娘飘庄。我一直安慰自己,他們只是感情好购撼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布跪削。 她就那樣靜靜地躺著,像睡著了一般迂求。 火紅的嫁衣襯著肌膚如雪切揭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天锁摔,我揣著相機(jī)與錄音廓旬,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛孕豹,可吹牛的內(nèi)容都是我干的涩盾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼励背,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼春霍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叶眉,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤址儒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后衅疙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莲趣,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年饱溢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喧伞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绩郎,死狀恐怖潘鲫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肋杖,我是刑警寧澤溉仑,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站状植,受9級(jí)特大地震影響彼念,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浅萧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哲思。 院中可真熱鬧洼畅,春花似錦、人聲如沸棚赔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽靠益。三九已至丧肴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胧后,已是汗流浹背芋浮。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壳快,地道東北人纸巷。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓镇草,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瘤旨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子梯啤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

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