首頁(yè)技術(shù)文章正文

Java培訓(xùn)之Servlet底層原理

更新時(shí)間:2017-05-31 來(lái)源:黑馬程序員Java培訓(xùn)學(xué)院 瀏覽量:

我們知道,當(dāng)用在客戶端訪問(wèn)Servlet時(shí),是通過(guò)Servlet在web.xml文件配置的訪問(wèn)路徑訪問(wèn)的。那么這一個(gè)過(guò)程又是如何實(shí)現(xiàn)的,服務(wù)器又是如何通過(guò)訪問(wèn)路徑找到Servlet類?下面通過(guò)一張圖來(lái)了解這一個(gè)過(guò)程,如圖1-1所示:
1553760115237_1496214744920048652.png由圖1-1可知,服務(wù)器從客戶端訪問(wèn)Servlet開(kāi)始,所做的一系列操作?,F(xiàn)在根據(jù)這個(gè)圖,我們來(lái)進(jìn)行詳細(xì)分析,具體如下所示:
(1)服務(wù)器根據(jù)客戶端的訪問(wèn)路徑,獲得Servlet的訪問(wèn)路徑;
(2)服務(wù)器拿著這個(gè)路徑去web.xml中進(jìn)行匹配,這個(gè)過(guò)程需要對(duì)web.xml解析;
(3)匹配成功后,會(huì)找到相應(yīng)的<servlet-class>標(biāo)簽,其值為Servlet的類名,可以通過(guò)反射獲得該Servlet的Class對(duì)象;
(4)然后調(diào)用Class對(duì)象的newInstance()方法,實(shí)例化一個(gè)Servlet對(duì)象,注意一定要為Servlet提供一個(gè)無(wú)參的構(gòu)造方法;
(5)利用反射獲得service()方法的Method對(duì)象,然后調(diào)用service()方法,即執(zhí)行method.invoke(Servlet實(shí)例,參數(shù)的Class對(duì)象),這樣就實(shí)現(xiàn)了service()方法的執(zhí)行。
以上就是客戶端訪問(wèn)Servlet的底層原理,需要大家結(jié)合反射的知識(shí),以及xml解析的知識(shí)去理解。

本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員Java培訓(xùn)學(xué)院
首發(fā):http://javaee.itheima.com/
分享到:

Java培訓(xùn)班課程javaee

Python培訓(xùn)機(jī)構(gòu)python大數(shù)據(jù)

web前端培訓(xùn)課程升級(jí)V8.5web

AI+設(shè)計(jì)培訓(xùn)課程ui

大數(shù)據(jù)培訓(xùn)課程cloud

軟件測(cè)試培訓(xùn)課程test

c

新媒體運(yùn)營(yíng)培訓(xùn)netmarket

產(chǎn)品經(jīng)理培訓(xùn)課程pm

linux培訓(xùn)Linux

movies

智能機(jī)器人培訓(xùn)robot

電商視覺(jué)設(shè)計(jì)課程uids

AI

集成電路應(yīng)用開(kāi)發(fā)(嵌入式)培訓(xùn)課程jdbc

在線咨詢 我要報(bào)名
和我們?cè)诰€交談!