回覆列表
-
1 # IT人劉俊明
-
2 # X567
這個問題,如果瞭解技術尤其是 j2ee是很好回答的;
Servlet容器提供的環境是支援 servlet api執行的一組java類實現,api是一組介面,需要一個底層實現類讓這些介面可以執行,這個底層就是這個所謂的執行環境,當然也會附加一些 管理、安全之類的附加功能,但 servlet規範沒要求。
-
3 # 成都朗沃教育
Servlet如果,沒有Servlet容器給它提供環境,它就執行不起來。就像沒有現在地球的這個環境給你提供氧氣一樣
你看上面這個Servlet,它莫名其妙就有request和response了,如果不是環境給它的,它哪來的?把這個Servlet換個環境,不給它request和response了,你說他還能跑麼。當然了,request和response只是環境提供的很小的一部分,
Servlet是Java Web的核心概念,理解Servlet對理解Java Web程式設計是至關重要的。要清楚Servlet的執行機制,首先要了解Servlet容器與Servlet之間的關係。當然,要讓大家清楚的認識Servlet,有必要給大家呈現一個完整的Servlet圖譜。
什麼是Servlet要清楚Servlet的功能,我們首先要看一下Servlet的官方定義是怎麼描述Servlet的。
簡單的概括一下Servlet:
一個執行在伺服器端的Java元件。
功能與CGI類似,但是執行環境卻大不相同。
Servlet能處理使用者的請求並動態生成迴應。
Web Container是一個管理Servlet生命週期的特殊Java虛擬機器,能以執行緒的方式處理請求。
這幾點關於Servlet的定義中,需要著重描述的是第二點和第四點。第二點提到了CGI,CGI是動態Web的標準處理模式,是里程碑式的技術結構(緬懷一下),為了簡單的描述一下CGI,我們看一下CGI的處理結構。
透過這個結構我們清楚了CGI的功能,其實Servlet在功能上與CGI是類似的。
Servlet定義的第四點是Servlet能以執行緒的方式處理請求,而這正是Servlet壓倒CGI的重要原因,我們看一下Servlet處理請求的方式:
圖中清晰的描述了執行緒的處理方式,大家都知道Java在Web處理上有較大的效能優勢,一個重要的原因是Servlet是以執行緒的方式處理請求的。
Servlet在整個Java Web解決方案中充當了核心的角色,也就是控制器角色。控制器是所有請求的入口,就像人類的大腦一樣負責協調全身的各種功能,讓這些功能能成為一個有機的整體。我們看一下Java Web中經常出現的MVC結構圖:
圖中除了描述Servlet外還描述了另外兩個核心元件:JSP和JavaBean。
這個結構是後續很多內容的起點,比如為了提高Web容器處理JavaBean的能力,出現了官方的EJB技術,也出現了Spring的非官方技術,但是Spring卻被廣大程式設計師熱捧,關於SpringMVC的內容將在以後的文章中跟大家陸續分享。
容器如何驅動Servlet在瞭解容器如何驅動Servlet之前,我們首先看一下容器的官方定義:
簡單的說,容器提供了Servlet的執行環境,提供了Servlet API的實現。為了描述Web容器如何驅動Servlet,我們看一下具體的處理過程:
首先,請求到達伺服器:
接著容器建立request和response物件:
接著呼叫service方法處理使用者的請求(需要request和response作為引數):
最後向客戶端返回結果:
這個過程主要就是容器驅動Servlet的過程,當然容器還管理著Servlet的生命週期,包括建立、執行、回收以及執行過程中所產生的各種事件。
希望透過這篇文章能讓大家對Servlet以及容器如何為Servlet執行提供服務有一個大致的瞭解,Servlet還有很多細節內容,在後續的文章中陸續跟大家分享。