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

全部教程
主站蜘蛛池模板: 四虎www成人影院免费观看 | 国产成人毛片亚洲精品不卡 | 日本不卡高清 | 爱爱爱免费视频 | 午夜精品久久久久久99热 | 草视频在线观看 | 夜夜夜夜夜操 | 国产精品亚洲欧美大片在线看 | 欧美三级做爰视频 | 狠狠综合视频精品播放 | 一级不卡毛片免费 | 伊人伊狠亚洲综合影院 | 久久亚洲精品专区蓝色区 | 免费一级毛片在线播放放视频 | 成人小视频在线观看免费 | 97在线视频免费播放 | s8国产成人精品视频 | 免费国产阿v视频在线观看 免费国产不卡午夜福在线 免费国产不卡午夜福在线观看 | 亚洲美色综合天天久久综合精品 | 一级毛片免费不卡 | 国产亚洲精品成人一区看片 | 国内精品自在自线在免费 | 亚洲一区不卡视频 | 成年人免费在线视频 | 国产成人亚洲精品一区二区在线看 | 亚洲国产精品一区二区久久hs | 亚洲视频1区 | 国产美女亚洲精品久久久毛片 | 91成人爽a毛片一区二区 | 国产日韩亚洲欧洲一区二区三区 | 四虎永久网站 | 久久久久久午夜精品 | 欧美不卡一区 | 国产一区国产二区国产三区 | 国产精品91在线 | 日韩欧美国产高清在线观看 | 特级aa一级欧美毛片 | 天天色天天 | 四虎影院免费 | 中文有码第一页 | 亚洲码欧美码一区二区三区 |