Web容器(一):Web容器簡介


Web容器

Web技術的發展史

早期的Web應用主要用於瀏覽新聞等靜態頁面,HTTP服務器(比如Apache、Nginx)向瀏覽器返回靜態HTML,瀏覽器負責解析HTML,將結果呈現給用戶。

隨着互聯網的發展,我們已經不滿足於僅僅瀏覽靜態頁面,還希望通過一些交互操作,來獲取動態結果,因此也就需要一些擴展機制能夠讓HTTP服務器調用服務端程序。

於是Sun公司推出了Servlet技術。你可以把Servlet簡單理解為運行在服務端的Java小程序,但是Servlet沒有main方法,不能獨立運行,因此必須把它部署到Servlet容器中,由容器來實例化並調用Servlet。

而Tomcat和Jetty就是一個Servlet容器。為了方便使用,它們也具有HTTP服務器的功能,因此Tomcat或者Jetty就是一個“HTTP服務器 + Servlet容器”,我們也叫它們Web容器

其他應用服務器比如JBoss和WebLogic,它們不僅僅有Servlet容器的功能,也包含EJB容器,是完整的Java EE應用服務器。從這個角度看,Tomcat和Jetty算是一個輕量級的應用服務器。在微服務架構日漸流行的今天,開發人員更喜歡穩定的、輕量級的應用服務器,並且應用程序用內嵌的方式來運行Servlet容器也逐漸流行起來。

Web容器與Spring、Web應用等的關系

Servlet技術是Web開發的原點,幾乎所有的Java Web框架(比如Spring)都是基於Servlet的封裝,Spring應用本身就是一個Servlet,而Tomcat和Jetty這樣的Web容器,負責加載和運行Servlet。你可以通過下面這張圖來理解Tomcat和Jetty在Web開發中的位置。 在這里插入圖片描述

Web容器作用

通信支持 利用容器提供的方法,你可以簡單的實現servlet與web服務器的對話。否則你就要自己建立server,監聽端口,創建新的流等等一系列復雜的操作。而容器的存在就幫我們封裝這一系列復雜的操作。使我們能夠專注於servlet中的業務邏輯的實現。

生命周期管理 容器負責servlet的整個生命周期。如何加載類,實例化和初始化servlet,調用servlet方法,並使servlet實例能夠被垃圾回收。有了容器,我們就不用花精力去考慮這些資源管理垃圾回收之類的事情。

多線程支持 容器會自動為接收的每個servlet請求創建一個新的java線程,servlet運行完之后,容器會自動結束這個線程。

聲明式實現安全 利用容器,可以使用xml部署描述文件來配置安全性,而不必將其硬編碼到servlet中。

jsp支持 容器將jsp翻譯成java!

Web容器處理流程

1.client點擊一個URL,其URL指向一個servlet

在這里插入圖片描述

2.容器識別出這個請求索要的是一個servlet,所以創建兩個對象:httpservletrequest、httpservletresponse

在這里插入圖片描述

3.容器根據請求中的URL找到對應的servlet,為這個請求創建或分配一個線程,並把兩個對象request和response傳遞到servlet線程中

在這里插入圖片描述

4.容器調用servlet的service()方法。根據請求的不同類型,service()方法會調用doGet()或者doPost()方法

在這里插入圖片描述

5.doGet()方法生成動態頁面,然后把這個頁面填入到response對象中

在這里插入圖片描述

6.線程結束,容器把response對象轉換成http響應,傳回client,並銷毀response和request對象

在這里插入圖片描述

Web容器涉及的知識點

Tomcat和Jetty作為工業級的中間件,它們的設計非常優秀,比如面向接口編程組件化骨架抽象類一鍵式啟停對象池技術以及各種設計模式,比如模板方法觀察者模式責任鏈模式等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM