JavaWeb之Response——重定向與解決中文亂碼問題

1)HttpServletResponse 概述
咱們在建立 Servlet 時會覆蓋 service() 方法,或 doGet()/doPost(),這些方法都有兩個參數,分別是表明請求的 request 和表明響應 response。(今天咱們主要來講說 response)
service 方法中的 response 的類型是 ServletResponse,而 doGet/doPost 方法的 response 的類型是 HttpServletResponse,HttpServletResponse 是ServletResponse 的子接口,功能和方法更增強大,因此今天咱們來學習的就是 HttpServletResponse。
2)response 的運行流程
當咱們經過頁面請求 web 應用的時候,Tomcat 就會建立一個 request 對象,和一個 response 對象一塊兒傳進 Servlet 中,而後 Tomcat 會把response 緩衝區中的內容取出來 包裝成一個 http 響應返回頁面~
由於 response 表明響應,因此咱們能夠經過該對象分別設置 Http 響應的響應行,響應頭和響應體
3)經過response設置響應行
經常使用的狀態碼以下:
200 :請求成功。
302 :請求重定向。
304 :請求資源沒有改變,訪問本地緩存。
404 :請求資源不存在。
500 :服務器內部錯誤。
經過setStatus(int sc)方法能夠設置響應行的狀態碼。
4)經過 response 設置響應頭
方法:
addHeader(String name, String value)
addIntHeader(String name, int value)
addDateHeader(String name, long date)
setHeader(String name, String value)
setDateHeader(String name, long date)
setIntHeader(String name, int value)
其中,add表示添加,而set表示設置(會替換掉先前的內容)html

5)重定向
重定向的意思:從新選擇路徑的過程就是一個重定向的過程。
下面用代碼來演示一下:
首先設置狀態碼302,而後設置頁面的路徑~web

這樣在咱們訪問 Servlet1 的時候,頁面就會跳轉到 Servlet2 。
這個就是重定向了~咱們也能夠把 Servlet1 中的兩句代碼簡化成爲一行瀏覽器

6)經過 response 設置響應體 響應體設置文本 PrintWriter getWriter() 得到字符流,經過字符流的 write(String s) 方法能夠將字符串設置到 response 緩衝區中,隨後 Tomcat 會將 response 緩衝區中的內容組裝成 Http 響應返回給瀏覽器端。 關於設置中文的亂碼問題 response 緩衝區的默認編碼是 iso8859-1,此碼錶中沒有中文,能夠經過setCharacterEncoding(String charset)設置 response 的編碼。可是這樣客戶端仍是不能正常顯示文字。 由於瀏覽器的默認編碼是本地系統的編碼,由於咱們都是中文系統,因此客戶端瀏覽器的默認編碼是 GBK。 咱們能夠經過 response 的setContentType(String type)方法指定頁面解析時的編碼是UTF-8。 由於該方法含有setCharacterEncoding的功能,因此在實際開發中只要編寫 response.setContentType("text/html;charset=UTF-8");就能夠解決頁面輸出中文亂碼問題了。緩存

相關文章
相關標籤/搜索