最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWEB中Servlet的生命周期詳解

 更新時(shí)間:2022年01月20日 10:52:43   作者:2022加油呀  
大家好,本篇文章主要講的是JavaWEB中Servlet的生命周期詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

一、什么是Servlet 生命周期?

Servlet 對象什么時(shí)候被創(chuàng)建?

Servlet對象什么時(shí)候被銷毀?

Servlet 對象創(chuàng)建了幾個(gè)?

Servlet 對象的聲明周期表示:Servlet 對象從出生到銷毀的過程是怎樣的

二、Servlet 是由誰來維護(hù)的?

Servlet 是由 Tomcat 服務(wù)器全權(quán)負(fù)責(zé)的,程序員無法干預(yù)。

Tomcat 又叫 WEB 容器。

我們自己 new 的 Servlet 對象 是不受 WEB 容器 管理的。

WEB 容器 自己創(chuàng)建的 Servlet 對象,會(huì)放到一個(gè)集合中【Map集合】,自己創(chuàng)建的 Servlet 是不會(huì)放到這個(gè)集合中的。這個(gè)集合保存了 請求路徑 和 Servlet 對象 的對應(yīng)關(guān)系。

三、Servlet 對象 是什么時(shí)候創(chuàng)建的?

在 Servlet 類中 寫一個(gè)無參構(gòu)造方法,當(dāng)Tomcat 啟動(dòng)時(shí) 這個(gè)無參構(gòu)造方法 并沒有被啟動(dòng),說明 Tomcat 啟動(dòng)時(shí) 并不會(huì)提前創(chuàng)建對象。

我們可以看到,當(dāng)我們在瀏覽器中發(fā)送請求時(shí),這個(gè)無參構(gòu)造方法才會(huì)執(zhí)行,說明:只有用戶發(fā)送請求時(shí),這個(gè)Servlet 對象 才會(huì)被創(chuàng)建。

那么可不可以讓 Tomcat 提前創(chuàng)建對象?

                是可以的,在配置文件中 增加一行代碼即可

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>StudentList</servlet-name>
        <!--完整包名-->
        <servlet-class>yangzhaoguang.servlet.StudentServlet</servlet-class>
        <!--設(shè)置Tomcat啟動(dòng)時(shí),創(chuàng)建對象、這里必須是正整數(shù),越小優(yōu)先級越高-->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>StudentList</servlet-name>
        <!--請求路徑-->
        <url-pattern>/servlet/Student</url-pattern>
    </servlet-mapping>
</web-app>

 當(dāng)設(shè)置之后,Tomcat 啟動(dòng)時(shí) ,無參構(gòu)造方法執(zhí)行了,說明創(chuàng)建對象成功。但是這個(gè)方法不常用,提前創(chuàng)建對象會(huì)耗費(fèi)內(nèi)存。

四、測試 Tomcat 什么時(shí)候被銷毀?

我們在 新建一個(gè)模塊,在模塊中新建一個(gè) AServlet 類 并 編寫三個(gè)方法

 修改配置文件,并重新部署 Servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>yangzhaoguang.servlet.AServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AServlet</servlet-name>
        <!--請求路徑-->
        <url-pattern>/a</url-pattern>
    </servlet-mapping>
</web-app>

 當(dāng)我們啟動(dòng)Tomcat 時(shí),Servlet 并沒有被創(chuàng)建

第一次發(fā)送請求時(shí), init 和 service 被調(diào)用。Servlet 對象被創(chuàng)建

當(dāng)我們不停的刷新網(wǎng)頁,每提交一次請求 service 方法就會(huì)執(zhí)行一次init 方法 只會(huì)在第一次用戶請求時(shí)執(zhí)行一次

 當(dāng)我們關(guān)閉 Tomcat 服務(wù)器時(shí),會(huì)銷毀 AServlet 的內(nèi)存,destroy 方法執(zhí)行了。

在執(zhí)行 destroy 方法時(shí),對象沒有被銷毀,這是因?yàn)?destroy 方法是 實(shí)例方法,需要對象來調(diào)用次方法。在執(zhí)行之后 對象才會(huì)被銷毀

Tomcat 響應(yīng)請求的過程:

 1、Tomcat 的配置文件中保存 路徑請求 與 Servlet 的對應(yīng)關(guān)系。Tomcat 根據(jù)瀏覽器中的URL,分析URL找到 AServlet 類

2、通過反射機(jī)制先調(diào)用 AServlet 中的無參構(gòu)造方法創(chuàng)建對象,執(zhí)行 init 完成初始化工作,調(diào)用 service 方法處理用戶的請求。【無參構(gòu)造方法是在init 方法執(zhí)行之前先執(zhí)行】

3、當(dāng)服務(wù)器關(guān)閉時(shí),執(zhí)行 destroy 方法。執(zhí)行之后銷毀對象。

創(chuàng)建對象(無參方法執(zhí)行)---->  初始化(init 方法執(zhí)行)---->   提供服務(wù)(service方法執(zhí)行) ---->  銷毀(destroy方法執(zhí)行)

當(dāng) Servlet 類中 有一個(gè) 有參數(shù)構(gòu)造時(shí),會(huì)報(bào)錯(cuò)嗎?

        會(huì)報(bào)錯(cuò):500錯(cuò)誤。一般情況下是服務(wù)端的java小程序出現(xiàn)了錯(cuò)誤。

 所以在開發(fā)中,不建議自己創(chuàng)建構(gòu)造方法。

思考一下:既然無參構(gòu)造方法和 init 方法都是在Servlet對象創(chuàng)建時(shí)執(zhí)行并只執(zhí)行一次,那么 無參構(gòu)造方法可以替代 init 方法嗎?

        不可以,因?yàn)樵赟ervlet 不建議構(gòu)建有參數(shù)構(gòu)造方法,所以 init 可以替代有參數(shù)構(gòu)造方法。

總結(jié)

到此這篇關(guān)于JavaWEB中Servlet的生命周期詳解的文章就介紹到這了,更多相關(guān)JavaWEB Servlet生命周期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

志丹县| 安阳市| 尤溪县| 隆安县| 孟村| 甘德县| 华亭县| 夹江县| 大冶市| 梨树县| 柯坪县| 邻水| 峡江县| 余干县| 视频| 阿瓦提县| 乌什县| 平度市| 洮南市| 北辰区| 龙州县| 潜山县| 呼图壁县| 濮阳县| 巍山| 陆丰市| 大同市| 临沂市| 临夏市| 和林格尔县| 原阳县| 裕民县| 兴隆县| 长泰县| 武穴市| 三原县| 鸡泽县| 射阳县| 梅州市| 若尔盖县| 高清|