JAVAWeb---HttpServletResponse中的方法

1.response
    ServletResponse -- 通用的response提供了一個響應應該具備最基本的屬性和方法
        |
        |-HttpServletResponse -- 在ServletResponse的基礎上針對於HTTP協議增長了不少強化的屬性和方法html

2.輸出數據
 1)getOutputStream字節輸出流
response.getOutputStream().write("中國".getBytes("utf-8"));
2)getWriter字符輸出流
response.getWriter().write("北京");
    Notice: getWriter和getOutputStream在一次請求中只能使用一個

3)解決亂碼
    1> 通知服務器發送數據時使用utf-8編碼
response.setCharacterEncoding("utf-8");
    2> 通知瀏覽器接受數據時使用utf-8解碼
response.setHeader("Content-Type", "text/html;charset=utf-8");

3> Notice:
        a. response對象中對Content-Type響應頭進行了封裝,可使用一下代碼代替 2>
response.setContentType("text/html;charset=utf-8");
        b. 若是設置了Content-Type,服務器會自動的設置 characterEncoding,所以解決亂碼只須要設置Content-Type響應頭一行代碼就能夠了,可是爲了代碼的可讀性更高,通常仍是建議同時設置 characterEncoding 和 Content-Type.java

1.response的運行流程

 

2.經過抓包工具抓取Http響應

由於response表明響應,因此咱們能夠經過該對象分別設置Http響應的響應行,響    應頭和響應體api

3.經過response設置響應行

設置響應行的狀態碼瀏覽器

setStatus(int sc)服務器

4.經過response設置響應頭

addHeader(String name, String value)oracle

addIntHeader(String name, int value)工具

addDateHeader(String name, long date)編碼

setHeader(String name, String value)code

setDateHeader(String name, long date)htm

setIntHeader(String name, int value)

 

其中,add表示添加,而set表示設置

 

重定向須要:1.狀態碼:302

2.響應頭:location 表明重定向地址

5.經過response設置響應體

(1)響應體設置文本

PrintWriter getWriter()

得到字符流,經過字符流的write(String s)方法能夠將字符串設置到response   緩衝區中,隨後Tomcat會將response緩衝區中的內容組裝成Http響應返回給瀏覽   器端。

 

關於設置中文的亂碼問題

緣由:response緩衝區的默認編碼是iso8859-1,此碼錶中沒有中文,能夠經過     response的setCharacterEncoding(String charset) 設置response的編碼

 

但咱們發現客戶端仍是不能正常顯示文字

緣由:咱們將response緩衝區的編碼設置成UTF-8,但瀏覽器的默認編碼是本地系     統的編碼,由於咱們都是中文系統,因此客戶端瀏覽器的默認編碼是GBK,咱們能夠   手動修改瀏覽器的編碼是UTF-8。

 

咱們還能夠在代碼中指定瀏覽器解析頁面的編碼方式,

經過response的setContentType(String type)方法指定頁面解析時的編碼是UTF-8

response.setContentType("text/html;charset=UTF-8");

 

上面的代碼不只能夠指定瀏覽器解析頁面時的編碼,同時也內含            setCharacterEncoding的功能,因此在實際開發中只要編寫      response.setContentType("text/html;charset=UTF-8");就能夠解決頁面輸出中文亂碼問題。

相關文章
相關標籤/搜索