商會(huì)網(wǎng)站建設(shè)方案廣告策劃公司
目錄
1.Servlet由來(lái)
2.Servlet快速入門(mén)
3.Servlet執(zhí)行原理
4.Servlet生命周期
1.Servlet由來(lái)
在JaveEE API文檔中對(duì)Servlet的描述是:可以運(yùn)行在服務(wù)器端的微小程序,但是實(shí)際上,Servlet就是一個(gè)接口,定義了Java類(lèi)被瀏覽器訪問(wèn)到(tomcat識(shí)別)的規(guī)則,所以說(shuō)編程人員需要去自定義一個(gè)類(lèi)實(shí)現(xiàn),Servlet接口,并重寫(xiě)其中的方法
瀏覽器請(qǐng)求服務(wù)器的信息的時(shí)候,有靜態(tài)資源和動(dòng)態(tài)資源,動(dòng)態(tài)資源在不同用戶訪問(wèn)時(shí)的表現(xiàn)不同,其中的邏輯由Java代碼規(guī)定,所以需要一個(gè)Java類(lèi),而這個(gè)Jave類(lèi)依賴于服務(wù)器(tomcat)才能運(yùn)行,那么tomcat如何識(shí)別這個(gè)Java類(lèi)呢?一定是需要一些規(guī)則,也就是接口(在Java中規(guī)則就是接口),所以Servlet接口應(yīng)運(yùn)而生
2.Servlet快速入門(mén)
- 創(chuàng)建JavaEE項(xiàng)目
- 自定義一個(gè)類(lèi),實(shí)現(xiàn)servlet接口
- 實(shí)現(xiàn)接口中的抽象方法
- 配置servlet
Servlet接口的方法 | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?方法描述 |
---|---|
init() | 初始化方法,在Servlet被創(chuàng)建時(shí)執(zhí)行,且只會(huì)執(zhí)行一次 |
getServletConfig() | 獲取ServletConfig對(duì)象,即Servlet的配置對(duì)象 |
getServletInfo() | 獲取Servlet的一些信息,版本,作者等等 |
service()? | 提供業(yè)務(wù)邏輯的代碼,每一次Servlet被訪問(wèn)時(shí)都執(zhí)行 |
destroy()? | 在服務(wù)器正常關(guān)閉時(shí)執(zhí)行,且只會(huì)執(zhí)行一次 |
配置servlet要在web.xml的根標(biāo)簽里面
<!-- 配置servlet -->
<servlet><servlet-name>demo1</servlet-name><servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class><!-- 全類(lèi)名 -->
</servlet><servlet-mapping><servlet-name>demo1</servlet-name><url-pattern>/demo1</url-pattern><!-- 資源路徑 -->
</servlet-mapping>
3.Servlet執(zhí)行原理
當(dāng)啟動(dòng)項(xiàng)目之后就可以執(zhí)行service()方法中的業(yè)務(wù)邏輯了,但是其中Servlet的執(zhí)行原理是怎么樣的呢?看下面這個(gè)視頻講得很清楚?3_Servlet_執(zhí)行原理_嗶哩嗶哩_bilibili
執(zhí)行原理:
- 服務(wù)器接受到客戶端瀏覽器的請(qǐng)求后,會(huì)解析請(qǐng)求URL路徑,獲取訪問(wèn)的servlet的資源路徑
- 查找web.xml文件,是否有對(duì)應(yīng)的<url-pattern>標(biāo)簽體內(nèi)容
- 如果有,則在找到對(duì)應(yīng)的<servlet-class>全類(lèi)名
- tomcat會(huì)將字節(jié)碼文件加載進(jìn)內(nèi)存,并且創(chuàng)建其對(duì)象
- 調(diào)用其方法
4.Servlet生命周期
- 被創(chuàng)建:執(zhí)行init方法,只執(zhí)行一次
- 提供服務(wù):執(zhí)行service方法,執(zhí)行多次
- 被銷(xiāo)毀:執(zhí)行destroy方法,只執(zhí)行一次