http協議包含請求和響應部分。httpservletrequest就代表著請求部分,httpservletresponse就代表著響應部分。
(1)中文亂碼問題
產生亂碼的原因:編碼和解碼的方式不一致導致產生亂碼,英文不存在亂碼問題。
解決方法:(1) 更改瀏覽器的檢視編碼(不可取)通知瀏覽器,使用的碼表
(2)在響應頭部設定編碼格式,告訴瀏覽器用哪種方式來解析
response.setheader("content-type", "text/html;charset=utf-8");
或者response.setcontenttype("text/html;charset=utf-8");
(2)輸出隨機驗證碼
(3)控制瀏覽器對響應資料不要快取//輸出隨機驗證碼
//輸出到瀏覽器的頁面上:imageio
}
(4)控制快取時間//通知瀏覽器不要快取
response.setheader("expires", "-1");
response.setheader("cache-control", "no-cache");
response.setheader("pragma", "no-cache");
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
(2)各種url位址的寫法//目標元件
throws servletexception, ioexception
在伺服器端獲取專案名 》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伺服器已經幫我們解決了...