Servlet總結(三) 請求和響應物件概述

2021-08-20 19:24:59 字數 3244 閱讀 4853

http協議包含請求和響應部分。httpservletrequest就代表著請求部分,httpservletresponse就代表著響應部分。

(1)中文亂碼問題

產生亂碼的原因:編碼和解碼的方式不一致導致產生亂碼,英文不存在亂碼問題。

解決方法:(1) 更改瀏覽器的檢視編碼(不可取)通知瀏覽器,使用的碼表

(2)在響應頭部設定編碼格式,告訴瀏覽器用哪種方式來解析     

response.setheader("content-type", "text/html;charset=utf-8");

或者response.setcontenttype("text/html;charset=utf-8");

(2)輸出隨機驗證碼

//輸出隨機驗證碼

//輸出到瀏覽器的頁面上:imageio

}

(3)控制瀏覽器對響應資料不要快取

//通知瀏覽器不要快取

response.setheader("expires", "-1");

response.setheader("cache-control", "no-cache");

response.setheader("pragma", "no-cache");

(4)控制快取時間

throws servletexception, ioexception(5)定時重新整理

}(7)請求重定向

throws servletexception, ioexception注意:重定向後,第乙個請求中response的物件輸出的資料將會被清空,不會在客戶端顯示,會向重定向後的傳遞request物件和

被清空後的

response物件。

(8)httpservletresponse細節:

位元組流和字元流不能同時使用,互斥的。

通過字元流或位元組流輸出的資料並不是直接打給瀏覽器的。而是把資料寫到response物件的快取中的。伺服器從快取中取出資料,按照http協議的響應格式輸出給瀏覽器。

如果你呼叫的response的輸出流沒有主動關閉,伺服器會替你關的。

httpservletrequest代表著客戶端的請求。伺服器端要獲取客戶的請求資訊只要找這個物件即可,該物件由容器建立。

(1)請求**和包含

1、請求**(forward):(當前應用內轉)

方式一:

servletcontext.getrequestdispatcher(string path):path必須以"/"開頭,表示絕對路徑

方式二:

servletrequest.getrequestdispatcher(string path):path如果"/"開頭,表示絕對路徑;如果不以"/"開頭,表示相對路徑

2、**的細節:aservlet(源元件)--->bservlet(目標元件)

****前會清空response的正文。

**頁面上只會輸出目標元件的輸出,源元件的任何頁面輸出都無效。

原則:**前,不要重新整理或關閉response的輸出流。

3、包含(include):requestdispatcher

aservlet(源元件)--->bservlet(目標元件):aservlet包含bservlet的輸出內容,例如下面的兩段**,第一段包含第二段,第一段中響應頭的設定無效,將執行第二段對響應頭的設定資訊,輸出的結果為「我愛中國」。

目標元件所有設定的頭都無效,正文有效。

//源元件

throws servletexception, ioexception

//目標元件

throws servletexception, ioexception

(2)各種url位址的寫法

在伺服器端獲取專案名 》request.request.getcontextpath()

請求和響應

1 response物件的字元輸入流在編碼時候,採用的是iso 8859 1的編碼表 在httpservletresponse介面中,有setcharacterencoding utf 8 方法來設定字元編碼 2 瀏覽器的解碼方式是gb2312,而我們使用的編碼是 utf 8 因此亂碼。sethea...

請求和響應

如果你正在做基於rest的web服務,你最好忽略request.post和request.get rest framework的request類擴充套件了標準的httprequest,新增對rest framework的靈活請求解析和請求身份驗證的支援。rest framework的請求物件提供靈活...

請求和響應

post方式請求 request.setcharacterencoding utf 8 response.setcontenttype text html charset utf 8 get方式請求 get方式請求的正文是在位址列中,在tomcat8.5版本以後,tomacat伺服器已經幫我們解決了...