1. 程式人生 > >Servlet處理請求和響應

Servlet處理請求和響應

Servlet處理請求的流程:

    1) 客戶端在瀏覽器的位址列中輸入一個請求的URL,按回車後就向伺服器端發起一個http request(由瀏覽器生成)。

    2) 伺服器端的Web Server首先接受到請求,並將請求轉交給容器,容器會根據請求的URL去呼叫客戶端要訪問的Servlet。

    3) 容器會根據web.xml中對Servlet的描述去查詢要訪問的Servlet,若找到,將此Servlet

裝載進虛擬機器並例項化(第一次訪問),然後呼叫Servlet例項中的service方法處理請求,並分配一個執行緒去執行。

注: 當第二次去訪問同一個Servlet時,若容器判斷到該Servlet已經被裝載並例項化,

那麼容器就不會再去建立一個新的Servlet例項,直接呼叫原來那個Servlet例項中的service方法

來處理請求。

    4) 若沒有查詢到,直接返回一個404的錯誤程式碼到客戶端,表示訪問的資源不存在。

Servlet處理響應:

設定HTTP狀態碼

設定響應狀態行:
HTTP狀態碼:

HTTP狀態碼:

100-199:表示資訊性程式碼,標示客戶端應該採取的其他動作,請求正在進行。

200-299:表示客戶請求成功。

300-399:表示用於已經移走的資原始檔,指示新的地址。

400-499:表示由客戶端引發的錯誤。

500-599:表示由伺服器端引發的錯誤

servlet設定狀態碼一般使用HttpServletResponse的setStatus()方法;

設定HTTP響應頭

HttpServletResponse物件用於操縱響應的HTTP頭 目的用於告訴客戶端 –傳送回來的內容的型別 –有多少內容正被髮送 常用的方法:

setContentType(String mimetype);

addCookie(Cookie c);

傳送內容的伺服器的型別

設定HTTP訊息體

HttpServletResponse物件負責將資訊返回給客戶端

HttpServletResponse物件只產生一個空的HTTP響應

傳回自定義的內容需要使用getWriter()或者getOutputStream()方法

–傳送普通文字

–傳送二進位制內容 

請求重定向和自動重新整理頁面

重定向的原理:

         

            

          

使用sendRedirect(String URL)方法實現重定向,

在指定時間內自動重新整理當前頁或到一個新的頁面 根據時間來控制響應 想在響應中有一個短時間的暫停 

response.setHeader("Refresh", "time; URL=url" );

 總結: 請求URL時HTTP發出了多個請求 狀態碼告訴瀏覽器傳送的內容及格式狀態 Servlet API與容器進行通訊 HttpServletResponse定義的常量來避免直接使用整數 在通過PrintWriter物件傳送任何內容之前先呼叫 HttpServletResponse的setStatus()方法 為了讓Servlet發揮最大的效能,HttpServletResponse物件用於操縱響應的HTTP頭 getWrite()或者getOutputStream()方法傳送文字或者二進位制內容給客戶端 sendRedirect方法實現重定向 HTTP響應頭“Refresh”會根據時間來控制響應