教學導航
教學目標
案例二、生成驗證碼(了解)
教學方法
我們在建立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...