Servlet處理請求和響應
阿新 • • 發佈:2019-02-09
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”會根據時間來控制響應