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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Servlet 运行原理

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

文章目錄

  • Servlet 如何運行
  • 演示 Servlet 運行原理

Servlet 如何運行

用戶向瀏覽器地址欄輸入:http://ip:port/helloweb/sayHello?name=zs

  • 瀏覽器使用 ip:port(端口號)連接服務器

  • 瀏覽器將請求數據按照 http 協議打成一個數據包(請求數據包)發送給服務器

  • 請求數據包的內容包含了請求資源路徑(/helloweb/sayHello?name=zs),另外,在請求數據包當中,還會包含瀏覽器自動生成的一些信息。

  • 服務器創建兩個對象:請求對象(Request)和響應對象(Response)
    服務器解析請求數據包,將解析之后的數據存放到請求對象里面,方便 servlet 讀取請求數據(因為 servlet 不用解析請求數據包,如果 要解析,需要理解 http 協議)。
    請求對象是 HttpServletRequest 接口的一個實現。
    響應對象是 HttpServletResponse 接口的一個實現,響應對象用于存放 servlet 處理的結果。

  • 依據請求資源路徑找到相應的 servlet 配置,通過反射創建 servlet 實例。然后調用其 service() 方法。
    在調用 service()方法時,會將事先創建好的請求對象(request)和響應對象(response)作為參數進行傳遞。在 servlet 內部,可以通過 request 獲得請求數據,或者通過 response 設置響 應數據。

  • 服務器從 response 中獲取數據,按照 http 協議打成一個數據包(響應數據包),發送給瀏覽器。

  • 瀏覽器會解析響應數據包,取出相應的數據,生成相應的界面。

  • 演示 Servlet 運行原理

    當用戶向瀏覽器地址欄輸入 http://ip:port/helloweb/sayHello?name=xxx

    原理圖

    說明:

  • 建立連接
    瀏覽器根據 IP 地址和端口號(port)和服務器建立連接

  • 打包
    瀏覽器將請求數據按 HTTP 協議打成數據包(http 請求數據包)
    http 請求數據包包含“helloweb/sayHello”(請求資源路徑)

  • 發送請求
    瀏覽器向服務器發送請求數據包

  • 創建 Request 對象
    Servlet 引擎(Tomcat 負責通訊的模塊)創建請求對象(Request),方便我們自定義的 Servlet 獲得請求數 據包中的內容
    該對象符合 HttpRequest 接口

  • 創建 Response 對象
    Servlet 引擎(Tomcat 負責通訊的模塊)創建相應對象(Response)
    該對象符合 HttpResponse 接口

  • 創建 HelloServlet 對象
    服務器通過反射的方式創建 Servlet 實例

  • 調用 Servlet 實例的 service(request , response)方法
    7.1)訪問參數
    在 service()方法中訪問 Request 對象,獲得用戶提交的一些參數
    7.2)處理結果
    在 service()方法中將處理結果放入 Response 對象

  • 取數據
    Servlet 引擎從 Response 對象中取出數據

  • 打包
    Servlet 引擎將取出的數據打包,該數據包符合 http 協議要求

  • 發送響應
    瀏覽器將響應數據包中的數據取出,生成界面

  • 總結

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

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