1. 程式人生 > >WEB應用載入過程

WEB應用載入過程

    初使化servlet(load-on-startup 單例)
Java Servlet Filter中 forward   redirect 作用(forward是轉發,redirect是重定向)
1. 執行過程角度的區別
   轉發過程:客戶瀏覽器傳送http請求---->web伺服器接受此請求-->呼叫內部的一個方法在容器內部完成請求處理和轉發動作---->將目標資源傳送給客戶;在這裡,轉發的路徑必須是同一個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到伺服器做了轉發的。轉發行為是瀏覽器只做了一次訪問請求。
當你在一個servlet中做一件事,已經做完了後要跳到另一個組建,可以用重定向
   重定向過程:客戶瀏覽器傳送http請求---->web伺服器接受後傳送302狀態碼響應及對應新的location給客戶瀏覽器-->客戶瀏覽器發現是302響應,則自動再發送一個新的http請求,請求url是新的location地址---->伺服器根據此請求尋找資源併發送給客戶。在這裡 location可以重定向到任意URL,既然是瀏覽器重新發出了請求,則就沒有什麼request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。
2. 資料共享角度的區別(共享request、response物件)

   當你在一個servlet中做一件事,但事情還沒有做完卻要跳到另一個組建(可以是jsp、servlet等),就用轉發;
   重定向是伺服器讓客戶端(瀏覽器)重新發送一個定向請求(貌似就是直接改變瀏覽器位址列地址),轉發是在伺服器內轉到另一個組建(但還是原來的請求),位址列不會改
servlet context listerner 比較常用 ,在tomcat啟動的時候,載入一些必要的東西 統計人數
servlet  單例,但是並不是被new一次,如果把統計人數交給某個類