Servlet處理請求后,一般情況下,請求重定向或轉發處理。
(dispatcher)請求轉發:也被稱為服務器端重定向,是指服務器在處理多個request請求的過程中,先后委托多個JSP
接替處理的過程。用dispatcher的方法來實現,通過RequestDispatchers來實現,一個是forward,另一個是include。相應的JSP里實現dispatch的標簽也有兩個:<jsp:forward/>和<jsp:include/>
Servlet跳轉到JSP, request到reponse始終期間傳遞,這是關鍵。可以把request和reponse看作是一種資源,一系列的servlet和jsp都是在基於同一份資源完成它們職責范圍之內的計算。
常使用:request.getRequestDispatcher("/xxxx.jsp").forward(request, response); 來處理轉發
(Redirect)重定向:被稱為客戶端重定向,是指HTTP重定向。當client給server發送一個請求,要求獲得一個資源。在server接收到這個請求后發現請求的這個資源實際存放在另一個位置,於是server在返回的response中寫入那個請求資源的正確的URL,並設置reponse的狀態碼為301(表示這是一個要求瀏覽器重定向的response),當client接受到這個response后就會根據新的URL重新發起請求。重定向有一個典型的特症,即,當一個請求被重定向以后,最終瀏覽器上顯示的URL往往不再是開始時請求的那個URL了。這就是重定向的由來。
常用:一般我們要根據我們的Web應用名稱來寫,如重定向到WebRoot根目錄下的login.jsp,我們可以這么寫,response.sendRedirect("/Web應用名稱/login.jsp");但是,這樣寫有一個bug,就是當你改變Web應用名稱的時候,跳轉就失敗了,所以Web應用名稱不能寫死,我們知道,request.getContextPath()能夠獲取到Web應用的名稱,所以可以這樣寫response.sendRedirect(""+request.getContextPath()+"/login.jsp");
Servlet處理請求后,讓這個Servlet再連接到另一個servlet,需要用到javascript技術。