日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Servlet工作原理

發布時間:2023/12/14 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Servlet工作原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Servlet工作原理

Servlet是運行在Servlet容器中的,由Servlet容器來負責,Servlet實例的查找、創建及整個生命周期的管理。
Servlet生命周期:

  • 類裝載及實例的創建階段:
    默認情況下,servlet實例是在接受第一次請求時進行創建并且以后的請求進行復用(單例),如果servlet需要進行一些復雜的操作,需在初始化時就完成eg:打開文件、初始化網絡連接,可以配置在服務器啟動時便創建實例,具體配置方法為在聲明servlet標簽中添加
    <load-on-satrtup>/</load-on-startup>標簽。

  • 初始化init(ServletConfig)
    一旦Servlet實例被創建,將會調用Servlet的init方法,同事傳入ServletConfig實例,傳入Servlet的相關配置信息,init方法在整個Servlet聲明周期中只會被調用一次。

  • 服務Service(HttpServletRequest request HttpServletResponse response)
    為提高效率,Servlet規范要求一個Servlet實例必須能同時服務于多個客戶端請求,即Service()方法運行在多線程的環境下(每一個請求在Servlet容器中都會產生一個線程來調用Service方法,但需要注意每個線程也共享Servlet對象的成員變量),Servlet開發者必須保證該方法的線程是安全的。另外HttpServletRequest對象封裝的事用戶請求的信息,此對象其他相應的方法獲取封裝的信息,用此對象可獲得用戶提交的信息,HttpServletResponse對象是用來響應用戶的請求,用此對象可獲得用戶想要得到的信息。

  • 銷毀destory()
    服務器關閉時會調用destory方法,銷毀Servlet實例。當Servlet容器將決定結束某個Servlet時,將會調用destory()方法,在destory方法中釋放資源,一旦destory方法被調用Servlet容器將不會再發送任何請求給這個實例,若Servlet容器再次使用該Servlet實例,需要重新實例化該Servlet實例。

  • Servlet執行流程

    Web服務器接到HTTP請求后,Web服務器將請求移交給Servlet容 器,Servlet容器首先對所請求的URL進行解析并根據Web.xml配置 文件找到相應的處理Servlet,同事將request、response對象傳遞給 它,Servlet通過request對象可知道客戶端的請求者請求信息以及 其他的信息等,Servlet在處理完請求后會把所有需返回的信息放入 response對象中并返回到客戶端,Servlet一旦處理完請求,Servlet 容器會刷新response對象,并把控制權重新返回給Web服務器。

    創建Servlet的時機.

    1.Servlet容器啟動時,讀取Web.xml配置文件中的信息,構造指定的Servlet對象,創建ServletConfig對象,同時將ServletConfig對象作為參數來調用Servlet對象init方法。
    2. 在Servlet容器啟動后,客戶首次向Servlet發出請求,Servlet容器會判斷內存中是否存在指定的Servlet對象,若沒有則根據客戶的請求創建HttpRequest、HttpReponse對象,從而調用Servlet對象的Service方法。
    3. Servlet容器在啟動時創建的Servlet是由在Web.xml文件中為 Servlet 設置的<load-on startup>
    屬性決定的,同一類型的Servlet對象在Servlet容器中以單例的形式存在。

    <Servlet><servlet-name>init</servlet-name><servlet-class>org.xl.servlet.Intservlet</servlet-class><load-on-satrtup>/</load-on-startup> </Servlet>

    Servlet與JSP比較

    它們有很多相似之處,都可以生成動態網頁
    1.JSP優點是:擅長網頁制作,生成動態頁面比較直觀;
    缺點:不容易跟蹤與拍錯;
    2.Servlet是純Java語言,擅長處理流程和業務邏輯;
    缺點:生成動態網頁不直觀;
    3.Servlet運行速度比CGI快,因為使用了多線程;
    4.Servlet使用了標準的api,可被許多web服務支持;
    5.Servlet與系統無關,一次編譯多次使用,也正是Java的特性;

    Tomcat與Servlet如何工作的

    1.Web Client 向Servlet容器發出Http請求;
    2.Servlet容器接收Web Client 的請求;
    3.Servlet容器創建一個Http Request對象,將Web Client請求信息封裝到這個對象中;
    4.Servlet容器創建一個HttpResponse對象;
    5.Servlet容器調用HttpServlet對象的Service方法,把HttpRequest對象與HttpResponse對象作為參數傳給HttpServlet對象;
    6.HttpServlet調用HttpRequest對象相關方法獲取Http請求信息;
    7.HttpServlet調用HttpResponse對象的相關方法生成響應數據;
    8.Servlet容器把HttpServlet的響應結果傳給WebClient;

    總結

    以上是生活随笔為你收集整理的Servlet工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。