本章將對servet進行的背景、工作原理、學習servet的建議三個方面進行講解。
一、servet產生背景
前一章我們說到了CGI存在的不足,其每次請求都需加載和運行一個CGI程序。若使用Java編寫CGI程序,需要爲每個請求都啓動一個系統進程以及JVM,其執行效率大大降低。如果有辦法取消這些開銷,即只需要啓動一個系統進程以及一個JVM映像,基於Java的CGI就能得到很好的改善。
Servlet就基於這種想法產生了,利用Java運行時可動態加載來處理新的請求,只需要啓動一次服務器進程,只加載一次JVM,之後這個JVM再動態加載另外的類。其執行效率比傳統CGI快得多了。Servlet的優點如下:
- 只需要啓動一個系統進程以及加載一個JVM,大大降低系統開銷。
- 如果多個請求需要做同樣處理的時候,只需要加載一個類,這也大大降低開銷。
- 所有動態加載的類可以實現對網絡協議以及請求解碼的代碼共享,大大降低工作量。
- Servlet能夠直接和Web服務器交互,而普通的CGI不能。Servlet還能夠在各個序之間共享數據,使得數據庫連接池之類的功能很容易實現。
- Servlet是與平臺無關的,因爲它們是用Java編寫的。
二、servlet工作原理
servlet工作原理如下圖所示:
這圖這麼清楚,就不用講了吧,如果不明白的話可以私信我
三、建議
Servlet是一個很重要的java基礎,就是CGI的優化,學習好Servlet很重要,JSP代碼最終也會轉爲servlet代碼。
Servlet:注重邏輯,在展示方面弱;所以適合邏輯處理,如果要展示可以用JSP
jsp:在展示方面有優勢,處理邏輯弱,不建議在JSP中寫邏輯代碼
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作爲來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。