大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Servlet教程

HttpServletResponse詳解:封裝HTTP響應消息

HttpServletResponse 接口繼承自 ServletResponse 接口,主要用于封裝 HTTP 響應消息。由于 HTTP 響應消息分為狀態行、響應消息頭、消息體三部分。因此,在 HttpServletResponse 接口中定義了向客戶端發送響應狀態碼、響應消息頭、響應消息體的方法,本節將針對這些方法進行詳細講解。

發送狀態碼相關的方法

當 Servlet 向客戶端回送響應消息時,需要在響應消息中設置狀態碼。因此,HttpServletResponse 接口定義了兩個發送狀態碼的方法。

1、setStatus(int status)方法

該方法用于設置 HTTP 響應消息的狀態碼,并生成響應狀態行。由于響應狀態行中的狀態描述信息直接與狀態碼相關,而 HTTP 版本由服務器確定,因此,只要通過 setStatus(int status)方法設置了狀態碼,即可實現狀態行的發送。需要注意的是,在正常情況下,Web 服務器會默認產生一個狀態碼為 200 的狀態行。

2、sendError(int sc)方法

該方法用于發送表示錯誤信息的狀態碼。例如,404 狀態碼表示找不到客戶端請求的資源。response 對象提供了兩個重載的 sendError(int sc)方法,具體如下:

public void sendError(int code) throws java.io.IOException
public void sendError(int code,String message)throws java.io.IOException

在上面重載的兩個方法中,第一個方法只發送錯誤信息的狀態碼,而第二個方法除了發送狀態碼以外,還可以增加一條用于提示說明的文本信息,該文本信息將出現在發送給客戶端的正文內容中。

發送響應消息頭相關的方法

Servlet 向客戶端發送的響應消息中包含響應頭字段,由于 HTTP 協議的響應頭字段有很多種,因此,HttpServletResponse 接口定義了一系列設置 HTTP 響應頭字段的方法,如表 2 所示。

表 1 設置響應消息頭字段的方法

方法聲明

功能描述

void addHeader(String name,String value)

這兩個方法都是用于設置 HTTP 協議的響應頭字段。其中,參數 name 用于指定響應頭字段的名稱,參數 value 用于指定響 應頭字段的值。不同的是,addHeader() 方法可以增加同名的響應頭字段,而 setHeader() 方法則會覆蓋同名的頭字段

void setHeader (String name,String value)

void addIntHeader(String name,int value)

void addIntHeader(String name,int value)這兩個方法專門用于設置包含整數值的響應頭,避免了使用 addHeader() 與 setHeader() 方法時需要將 int 類型的設置值轉換為 String 類型的麻煩

void setIntHeader(String name, int value)

void setContentType(String type)

void setContentType(String type)該方法用于設置 Servlet 輸出內容的 MIME 類型,對于 HTTP 協議來說,就是設置 Content-Type 響應頭字段的值。例如,如果發送到客戶端的內容是 jpeg 格式的圖像數據,就需要將響應頭字段的類型設置為 image/jpeg。需要注意的是,如果響應的內容為文本,setContentType() 方法還可以設置字符編碼,如 text/html;charset = UTF-8

void setLocale (Locale loc)

該方法用于設置響應消息的本地化信息。對 HTTP 來說,就是設置 Content-Language 響應頭字段和 Content-Type 頭字段中的字符集編碼部分。需要注意的是,如果 HTTP 消息沒有設置 Content-Type 頭字段,則 setLocale() 方法設置的字符集編碼不會出現在 HTTP 消息的響應頭中,如果調用 setCharacterEncoding() 或 setContentType() 方法指定了響應內 容的字符集編碼,則 setLocale() 方法將不再具有指定字符集編碼的功能

void setCharacterEncoding(String charset)

該方法用于設置輸出內容使用的字符編碼,對 HTTP 協議來說,就是設置 Content-Type 頭字段中的字符集編碼部分。如果沒有設置 Content-Type 頭字段,則 setCharacterEncoding 方法設 置的字符集編碼不會出現在 HTTP 消息的響應頭中。setCharacterEncoding() 方法比 setContentType() 和 setLocale() 方法的優先權高,它的設置結果將覆蓋 setContentType() 和 setLocale() 方法所設置的字符碼表

需要注意的是,在表 1 列舉的一系列方法中,addHeader()、setHeader()、addIntHeader()、setIntHeader() 方法都用于設置各種頭字段,而 setContetType()、setLoacale() 和 setCharacterEncoding() 方法用于設置字符編碼,這些設置字符編碼的方法可以有效解決亂碼問題。

發送響應消息體相關的方法

由于在 HTTP 響應消息中,大量的數據都是通過響應消息體傳遞的,因此,ServletResponse 遵循以 I/O 流傳遞大量數據的設計理念。在發送響應消息體時,定義了兩個與輸出流相關的方法。

1、getOutputStream() 方法

該方法所獲取的字節輸出流對象為 ServletOutputStream 類型。由于 ServletOutputStream是OutputStream 的子類,它可以直接輸出字節數組中的二進制數據。因此,要想輸出二進制格式的響應正文,就需要使用 getOutputStream() 方法。

2、getWriter() 方法

該方法所獲取的字符輸出流對象為 PrintWriter 類型。由于 PrintWriter 類型的對象可以直接輸出字符文本內容,因此,要想輸出內容全部為字符文本的網頁文檔,則需要使用 getWriter() 方法。

注意:雖然 response 對象的 getOutputStream() 和 getWriter() 方法都可以發送響應消息體,但是,它們之間互相排斥,不可同時使用,否則會發生 IllegalStateException 異常。

全部教程
主站蜘蛛池模板: 成人影院午夜久久影院 | 亚洲欧美国产日产综合不卡 | 在线播放国产视频 | 91尤物在线视频 | 看全色黄大色黄大片爽一下 | 毛片.com| 一本色道久久爱88a 一本色道久久爱88av俺来也 | 日本老熟妇激情毛片 | 久久久久久岛国免费网站 | 久久成人网18网站 | 精久久| 手机免费在线观看 | 中文国产成人精品久久久 | 中文字幕日本不卡一二三区 | 日韩高清在线播放不卡 | 人成精品视频三区二区一区 | 日韩中文字幕高清在线专区 | 午夜91| 国产福利影院在线观看 | 色人久久 | 99在线精品国产不卡在线观看 | 成人a毛片手机免费播放 | 日韩精品久久久毛片一区二区 | 99精品久久精品一区二区 | 91福利国产在线观看 | 国产另类图片 | 四虎影视2022入口网址 | 国产日韩欧美精品一区 | 午夜欧美日韩 | 一级特黄特黄毛片欧美的 | 奇米影视一区二区三区 | 久久综合性 | 瑟瑟在线观看 | 国产精品9999 | 四虎影院免费视频 | 色一区二区 | 国内精品久久久久影院蜜芽 | 国产精品亚洲第一区广西莫菁 | 在线久综合色手机在线播放 | 国产欧美日韩综合一区二区三区 | 国产一级精品毛片 |