12-碼蟻JavaWeb之Response
一、response響應過程
牢記響應的流程圖
在去傳送一個請求時, 會找到tomcat引擎 引擎會找到對應的web應用 並且會建立request物件 和response物件 找到應用後, 會執行應用的web.xml 再去根據url-patten的內容 建立Servlet物件 並且會呼叫Servlet物件的service方法, 並且把建立的request物件和response物件 傳入到方法當中 拿到response物件後, 自己可以往響應當中 寫入一些自己給客戶端的內容 通過response.getwrite().wirte("寫的內容") 方法進行寫入 寫的內容, 是存到一個response緩衝區當中 當方法執行結束之後, tomcat就會從response緩衝區 當中取出資料 取出你的資料同時, 它自己還會自動的往裡面 新增一些伺服器相關的資訊進去 所以響應給瀏覽器時, 可以看到除了自己寫的內容, 還會有一些伺服器相關的資訊


image.png
二、學習響應
通過response設定響應行,響應頭 ,響應體
設定響應行
response.setState(Int code)
設定響應頭
add代表新增新的內容 addHeader(String name,String value) addIntHeader(String name,int value) addDateHeader(String name,date) set代表設定,已經存在的內容 setHeader(String name,String value) setIntHeader(String name,int value) setDateHeader(String name,Date value)


重定向
1.什麼是重定向?
2.重定向的狀態碼?
3.重定向特點?
4.定時重新整理重定向
什麼是重定向 到伺服器當中去找servlet1 servlet1當中沒有這個資源,告訴你去找servlet2 再去傳送一個請求到servlet2 狀態碼 302 特點 要訪問兩次伺服器 第一次訪問是人為的去訪問 第二次是自動的訪問 瀏覽器位址列已經發生變化 設定重定向 設定響應碼 設定響應頭 封裝的重寫向 每次都要寫狀態碼,和location比較麻煩 就給封裝了一個方法 response.sendRedirect("/bei/servlet2") 定時重新整理重定向 response.setHeader("refresh","5;url=http://www.baidu.com") 5代表5秒 url的值為5秒後要去跳轉的地址

設定響應體
1.通過write方法來寫
2.通過OutPutStream來寫
1.通過write方法來寫 response.getwrite().wirte(“要寫的內容”) 預設情況下寫的中文內容會亂碼 把寫的內容存到快取區中使用的是ISO8859 ISO8859不支援中文,所以會亂碼 在存之前設定可以設定存放的編碼 response.setCharacterEncoding("UTF-8") 告知瀏覽器使用的是utf-8編碼 response.setHeader("Content-Type", "text/html;charset=UTF-8"); 上面程式碼只需要寫第二句就行, tomcat看到設定了為utf-8的編碼, 它在存在的時候也會使用utf-8的編碼 使用封裝寫法 response.setContentType("text/html;charset=UTF-8"); 2.通過OutPutStream來寫 FileInputSteam read方法讀取一個位元組 read(byte[] b) 一次讀取多個位元組,並存放到陣列b中 上面是一次一滴一滴給你,這種是一次裝一水桶再給你 讀取全部的資料 FileOutputSteam write() 一次性寫一個字元 write(buffer) 一個性寫多個字元 write(buffer,0,len) 一次性寫指定個數的字元 response注意點 getWrite()和getOutputSteam不能同時呼叫


image.png