大战熟女丰满人妻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 異常。

全部教程
主站蜘蛛池模板: 亚洲狠狠婷婷综合久久久久网站 | 免费毛片播放 | 黄动漫在线无限看免费 | 99国产精品免费观看视频 | 日本一级片在线观看 | 一级不卡毛片 | 91精品国产高清久久久久久io | 99国产在线视频 | 日本在线不卡免费 | 精品视频网 | 天天操狠狠操 | www色午夜| 欧美韩国日本在线 | 男人天堂2021 | 日韩精品一区二区三区毛片 | 一级日本强免费 | 四虎激情 | 奇米第八色 | 国产一区二区三区久久精品小说 | 尤物视频在线 | 精品在线一区二区三区 | 91精品国产乱码久久久久久 | 97影院午夜在线观看视频 | 国产精品久久久久秋霞影视 | 久久久久亚洲香蕉网 | 4hu影院永久在线播放 | 成人免费国产欧美日韩你懂的 | 老外黑人欧美一级毛片 | 香蕉视频禁止18 | 亚洲视频免费 | 91九色精品国产免费 | 久久成人免费观看草草影院 | 69做爰视频在线观看 | 一个色在线 | 日日夜夜操美女 | 中文乱码精品一区二区三区 | 国产探花视频在线观看 | 99久久香蕉国产综合影院 | 国产精品久久久久久久福利院 | 亚洲一区二区日韩欧美gif | 国产深夜福利视频在线观看 |