說說你對servlet 的理解

2021-09-07 23:23:46 字數 1645 閱讀 8277

我們都知道網頁有靜態和動態之分。靜態的只能看看,而動態可以實現客戶端和伺服器的互動,比如登入的功能,我們輸入使用者名稱和密碼後提交到伺服器,伺服器會處理這些資訊,如果正確的話則進入主頁。若不正確,則給出提示資訊。

servlet是sun公司提供的一門用於開發動態web資源的技術。按照這套規範寫出來的servlet可以放置到web應用中在servlet容器中執行.

servlet

------介面

–genericservlet

------抽象類----只有其中的service方法是抽象方法

–httpservlet------類(在genericservlet類的基礎上對http協議進行了優化,並且實現了其中的service抽象方法,在其中判斷了請求的請求方式,並根據請求方式的不同分別呼叫不同的do***()方法)

–自己的servlet

方式一:編寫乙個類去實現servlet介面(必須重寫servlet介面裡面所有的抽象方法)

方式二:編寫乙個類去繼承genericservlet抽象類(重寫生命週期的service方法(抽象方法))

實現這個service方法在其中寫處理請求的**

方式三:編寫乙個類去繼承httpservlet抽象類(沒有抽象方法!根據頁面的提交方式決定重寫doget或者dopost方法)

(1)在瀏覽器輸入位址,瀏覽器先去查詢hosts檔案,將主機名翻譯為ip位址,如果找不到就再去查詢dns伺服器將主機名翻譯成ip位址。

(2)瀏覽器根據ip位址和埠號訪問伺服器,組織http請求資訊傳送給伺服器。

(3)伺服器收到請求後首先根據host請求頭判斷當前訪問的是哪台虛擬主機。

(4)伺服器根據http請求頭中的請求uri判斷當前訪問的是哪個web應用。

(5)伺服器根據http請求頭中的請求uri判斷當前訪問的是web應用中的哪個web資源。

(6)檢查web應用的web.xml檔案,如果根據路徑找到具體的servlet處理類的全路徑名交給該servlet處理,如果找不到就交給預設servlet處理。

(7)這個過程中瀏覽器只知道自己發出來http請求,不久就收到了http響應,瀏覽器不知道也不關心伺服器內部是如何處理的。瀏覽器和伺服器之間的關係是非常單純的,只有http協議。

(8)解析請求、封裝requestresponse物件、建立servlet、呼叫service方法都是伺服器自動進行的,開發人員只需要寫好servlet配置進容器中即可,無需操心具體的底層實現

servlet第一次被訪問到時建立物件,建立出來後立即執行init方法執行初始化的操作。

從此以後該物件一直駐留在記憶體中為後續的對這個servlet的請求進行服務。

在存活期間,每次對servlet 的呼叫都會導致service方法的執行,根據http請求方式,呼叫service()方法中對應的doget()或dopost()方法,並將響應結果返回。

直到伺服器關閉或web應用移除出容器時,隨著web應用的銷毀servlet物件銷毀掉,在銷毀之前呼叫destory方法執行善後工作。

說說你對依賴注入的理解

di dependency injection,即 依賴注入 元件之間依賴關係由容器在執行期決定 由容器動態的將某個依賴關係注入到元件之中 依賴注入的目的並非為軟體系統帶來更多功能,而是為了提公升元件重用的頻率,並為系統搭建乙個靈活 可擴充套件的平台。通過依賴注入機制,我們只需要通過簡單的配置,而無...

靈魂拷問 說說你對前端的理解

大多數人對前端的認識可能是寫點簡單的 html,css 樣式,製作點網頁介面,其實不然。2005 年之前,前端開發這個詞還是很少見的,尤其在國內。但近幾年的前端可謂是飛速發展,在沒有前端崗位之前,乙個專案中負責後台功能邏輯處理的 和前端頁面展示 混在一起,不免會給開發和維護帶來各種問題,漸漸的許多大...

說說你對SPA(單頁應用)的理解

spa是一種網路應用程式或 的模型,它通過動態重寫當前頁面來與使用者互動,這種方法避免了頁面之間切換打斷使用者體驗 在單頁應用中,所有必要的 html j ascript和css 都通過單個頁面的載入而檢索,或者根據需要 通常是為響應使用者操作 動態裝載適當的資源並新增到頁面 舉個例子來講就是乙個杯...