一、 HTTP 響應的格式
響應行: HTTP 版本、響應碼、響應描述
響應頭
空行
消息體
HTTP 默認的文本編碼爲: ISO-8895-1
二、 響應碼的設置
1. 什麼是響應碼
響應碼位於 HTTP 響應的響應行中,他用來描述當前 Servlet 的一些重要信息。常見的響應碼有 200.302 , 404 , 500
2. 如何設置響應碼
通過 setStatus() 設置狀態碼,除了 302 和 307 外每個狀態碼都有一個對應的常量。
特殊的幾個狀態碼設置:
sendError(int code,String info): 用來設置 404 狀態碼
sendRedirect(String URL): 請求重定向, 302 狀態碼
3. 響應碼的作用
響應碼可以把用戶重定向到另一個網站( 302 ),可以指示出後面附加的文檔是什麼類型,可以告訴用戶必須提供密碼等信息( 404 )。
4. 什麼是請求重定向
當外部請求到來時,相應的 Servlet 中沒有找到對應的資源的時候就會給客戶端發送一個別的服務器的 URL ,讓客戶端去連接這個資源。這種方式要求客戶端發送 2 次請求,會極大浪費資源。
三、 設置響應頭
1. 什麼是 MIME
MIME 就是表示發送到客戶端的內容的格式,我們通過設置 MIME 告訴客戶端該用什麼形式正確顯示響應的內容,比如在網頁中顯示 EXCEL 電子表格。
2. 響應頭的作用
HTTP 響應頭能夠告訴客戶端一些比較重要的信息:比如響應的內容類型,內容的長度,響應的時間等。
3. 怎麼設置響應頭
通過 setHeader ( String name,String value )設置響應頭。特別的比如:
setContextType(“text/html”) 與 setHeader(“Context-type”,”text/html”) 的功能和意義是一樣的,只是後者的寫法更加簡潔。
四、 設置消息體
1. 消息體的內容
HttpServletResponse 本身返回的是一個空的 Response 對象,其內容是需要我們人爲輸入的。
2. 消息體的設置
我們一般使用 response.getWrite() 獲得字符輸出流,利用 response.getOutputStream() 獲得字節輸出流。下載一般用字節流進行傳輸,因爲圖片、音樂等的傳播都是通過字節進行傳播的。
3. 網頁自動刷新和跳轉的設置
通過 setHeader 方法實現
Response.setHeader(“Refresh”,”time”,”URL”).
4. 實現下載功能的步驟
首先建立字節輸入流和一個數組並將文件讀入到數組中
接着 response.setHeader(“Content-disposition”,”attachment;filename=”fileName) 來設置好 MIME 。
最後通過輸入出輸出。