JAVAWEB入门之Sevlet的执行原理
上一節(jié)我們學(xué)習(xí)了快速入門,
但是里面的問題是ServletDemo1里面既沒有創(chuàng)建對象,又沒有寫方法,竟然就被執(zhí)行了,為什么呢?
我們來分析一下Sevlet的執(zhí)行原理
1.當(dāng)服務(wù)器接收到客戶端瀏覽器的請求后,會解析請求URL路徑,獲取訪問的Servlet的資源路徑
2.查找web.xml文件,是否有對應(yīng)的<url-pattern>標(biāo)簽體內(nèi)容
3.如果有,則再找到對應(yīng)的<servlet-class>全類名
4.tomcat服務(wù)器,第一步將字節(jié)碼文件加載進(jìn)內(nèi)存,并且創(chuàng)建其對象
5.調(diào)用其方法
至于里面的<servlet-name>只是為了對應(yīng)名字可以互相匹配
?
Servlet中的生命周期:
1.被創(chuàng)建:執(zhí)行init方法,只執(zhí)行一次
疑問:默認(rèn)情況下,第一次被訪問時,Servlet被創(chuàng)建
? ? ? ? ? ?可以配置執(zhí)行Servlet的創(chuàng)建時機
? ? ? ? ? ?在<servlet>標(biāo)簽下配置
? ? ? ? ? ??
修改為-5,這時候再次啟動服務(wù)器,服務(wù)器并沒有init.....出現(xiàn),這說明
Servlet的init方法,只執(zhí)行一次,說明一個Servlet在內(nèi)存中只存在一個對象?,說明Servlet是單例的
多個用戶同時訪問時,可能存在線程安全問題
解決:盡量不要在Servlet中定義成員變量。即使定義了成員變量,也不要對其修改值(賦值)
?
2.提供服務(wù):執(zhí)行service方法,執(zhí)行多次
每次訪問Servlet時,Service方法都會被調(diào)用一次
3.被銷毀:執(zhí)行destroy方法,執(zhí)行一次
Servlet被銷毀時執(zhí)行。服務(wù)器關(guān)閉時,Servlet被銷毀
只有服務(wù)器正常關(guān)閉時,才會執(zhí)行destroy方法
那么問題來了,Servlet先銷毀還是destroy先執(zhí)行呢?
結(jié)論是,先執(zhí)行destroy方法,一般用于釋放資源
?
?
總結(jié)
以上是生活随笔為你收集整理的JAVAWEB入门之Sevlet的执行原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android studio的Activ
- 下一篇: ps发光插件_PS插件自定义区域发光真实