第十四天 response

2021-08-21 06:58:49 字數 2971 閱讀 2187

教學導航

教學目標

案例二、生成驗證碼(了解)

教學方法

我們在建立servlet時會覆蓋service()方法,或doget()/dopost(),這些方法都有兩個引數,乙個為代表請求的request和代表響應response。

service方法中的response的型別是servletresponse,而doget/dopost方法的response的型別是httpservletresponse,httpservletresponse是servletresponse的子介面,功能和方法更加強大,今天我們學習httpservletresponse。

設定響應行的狀態碼

setstatus(int sc)

addheader(stringname,stringvalue)

addintheader(stringname, int value)

adddateheader(stringname, long date)

setheader(stringname,stringvalue)

setdateheader(stringname, long date)

setintheader(stringname, int value)

其中,add表示新增,而set表示設定

(1)響應體設定文字

printwritergetwriter()

獲得字元流,通過字元流的write(strings)方法可以將字串設定到response   緩衝區中,隨後tomcat會將response緩衝區中的內容組裝成http響應返回給瀏覽   器端。

關於設定中文的亂碼問題

原因:response緩衝區的預設編碼是iso8859-1,此碼表中沒有中文,可以通過     response的setcharacterencoding(stringcharset)設定response的編碼

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

原因:我們將response緩衝區的編碼設定成utf-8,但瀏覽器的預設編碼是本地系     統的編碼,因為我們都是中文系統,所以客戶端瀏覽器的預設編碼是gbk,我們可以   手動修改瀏覽器的編碼是utf-8。

我們還可以在**中指定瀏覽器解析頁面的編碼方式,

通過response的setcontenttype(stringtype)方法指定頁面解析時的編碼是utf-8

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

上面的**不僅可以指定瀏覽器解析頁面時的編碼,同時也內含            setcharacterencoding的功能,所以在實際開發中只要編寫response.setcontenttype("text/html;charset=utf-8");就可以解決頁面輸出中文亂碼問題。

(2)響應頭設定位元組

servletoutputstreamgetoutputstream()

獲得位元組流,通過該位元組流的write(byte bytes)可以向response緩衝區中寫入字 節,在由tomcat伺服器將位元組內容組成http響應返回給瀏覽器。

**如下:

1)告知瀏覽器檔案的型別:response.setcontenttype(檔案的mime型別);

response.setheader("content-disposition","attachment;filename=檔名稱");

**如下:

解決亂碼方法如下(不要記憶--了解):

if (agent.contains("msie")) else if (agent.contains("firefox")) else {

// 其它瀏覽器

filename = urlencoder.encode(filename, "utf-8");                    

其中agent就是請求頭user-agent的值

第十四天 Session

session通過sessionid來區分不同的客戶,session是以cookie或url重寫為基礎的,預設使用cookie來實現,系統會創造乙個名為jsessionid的輸出cookie,這稱之為session cookie,以區別persistent cookies 通常看不到jsession...

Qt第十四天

qfiledialog檔案對話方塊 qcolordialog顏色對話方塊 qfontdialog字型對話方塊 qinputdialog輸入對話方塊 qmessagebox訊息框 dialog.h ifndef dialog h define dialog h include namespace ui...

Python 第十四天

物件導向程式設計 object oriented programming,簡稱 oop 是一種封裝 的方法。封裝,其實就是隱藏實現功能的具體 僅留給使用者使用的介面,就好像使用計算機,使用者只需要使用鍵盤 滑鼠就可以實現一些功能,而根本不需要知道其內部是如何工作的。python 中,建立乙個類使用c...