一、什么是Response 我們開發(fā)的軟件是B/S結(jié)構(gòu)的軟件恩袱,? ? ? 是可以通過瀏覽器訪問服務(wù)器的軟件泣棋。從瀏覽器輸入? ? 一個地址,訪問服務(wù)器的這個過程稱為請求畔塔。服務(wù)器? ? 接收到請求潭辈,需要進行處理,處理以后澈吨,還需要將處? ? ? 理結(jié)果發(fā)回瀏覽器端顯示把敢,這個過程稱為響應(yīng)(二)Response對象的API一、Response關(guān)于響應(yīng)行的? ? ? 方法setStatus(int sc)設(shè)置響應(yīng)的狀態(tài)碼200成功302? ? ? 重定向304查找本地緩存404請求資源不存在500服務(wù)? ? ? 器內(nèi)部錯誤二谅辣、Response關(guān)于響應(yīng)頭的方法setDate? ? ? Header(String name, long date)setHeader(String? ? ? ? name, String value)setIntHeader(String name, int? ? ? value)set開頭的方法用于設(shè)置:針對一個key對應(yīng)一個? ? ? value的情況舉例:原頭信息Content-Type:text/html? ? ? 調(diào)用setHeader("Content-Type","text/html");? ? ? 最終結(jié)果:Content-Type:text/html? ? addDateHeader(String name, long date)? ? addHeader(String name, String value)? ? addIntHeader(String name, int value)? ? add開頭的方法用于追加:針對一個key對應(yīng)多個value的情況舉例:? ? 原頭信息Content-Type:text/html調(diào)用addHeader("Content-Type","text/plain");? ? 最終結(jié)果:Content-Type:text/html,text/plain三修赞、Response關(guān)于響應(yīng)體的方法getOutputStream()
? ? 將二進制字節(jié)發(fā)送到客戶端getWriter()將字符文本發(fā)送到客戶端用于向瀏覽器端輸出內(nèi)容四、Response? ?
? 其他的APIaddCookie(Cookie cookie)服務(wù)器向瀏覽器回寫Cookie的方法sendRedirect(String location)
? ? 重定向的方法setContentType(String type)設(shè)置瀏覽器打開頁面時候采用的字符集setCharacterEncoding?
? (String charset)設(shè)置響應(yīng)字符流的緩沖區(qū)的字符集
五屈藐、Response對象的API的代碼演示
(1)設(shè)置狀態(tài)碼?
(2)完成重定向1)重定向:是302狀態(tài)碼和Location響應(yīng)頭結(jié)合使用的效果2)實際開發(fā)中可以使用response.sendRedirect("/web01/ResponseDemo2");? ? 替換重定向那兩句的寫法
一榔组、使用字節(jié)流響應(yīng)中文?
? 1熙尉、編寫代碼? ? ?
2联逻、向頁面輸出中文是否會有亂碼?不一定检痰!?
? ? 3包归、原因:其實這個亂碼的產(chǎn)生,與中文轉(zhuǎn)成字節(jié)數(shù)組铅歼,以及瀏覽器的打開方式(打開的時候采用的默認字符集)有關(guān)? ?
4公壤、解決:將中文轉(zhuǎn)成字節(jié)數(shù)組的時候换可,和瀏覽器默認打開的時候采用的字符集一致即可?
? 二、使用字符流響應(yīng)中文? ?
? ? 1厦幅、編寫代碼? ?
? 2沾鳄、向頁面輸出中文是否會有亂碼?一定亂碼? ?
? ? 3确憨、原因:字符流是有緩沖區(qū)的译荞,Response獲得字符流,老外設(shè)計默認的緩沖區(qū)編碼是ISO-8859-1休弃,這個字符集不支持中文? ? ?
? 4吞歼、解決:設(shè)置Response獲得字符流緩沖區(qū)的編碼,和設(shè)置瀏覽器默認打開時采用的字符集一致即可