Response的應(yīng)用_第1頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、response的應(yīng)用1httpservletresponse概述service辦法中的response的類型是servletresponse,而doget/dopost辦法的response的類型是httpservletresponse,httpservletresponse是servletresponse的子接口,功能和辦法越發(fā)強大。 2response的運行流程3通過response設(shè)置響應(yīng)行1)設(shè)置響應(yīng)行的狀態(tài)碼setstatus(int sc);2)封裝成一個重定向的辦法sendredirect(url);response.sendredirect("/web3/s

2、ervlet2");4通過response設(shè)置響應(yīng)頭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表示設(shè)置;5通過response設(shè)置響應(yīng)體(1)響應(yīng)體設(shè)置

3、文本printwriter getwriter()獲得字符流,通過字符流的write(string s)辦法可以將字符串設(shè)置到response 緩沖區(qū)中,隨后tomcat會將response緩沖區(qū)中的內(nèi)容組裝成http響應(yīng)返回給掃瞄器端。 關(guān)于設(shè)置中文的亂碼問題緣由:response緩沖區(qū)的默認(rèn)編碼是iso8859-1,此碼表中沒有中文,可以通過 response的setcharacterencoding(string charset) 設(shè)置response的編碼但我們發(fā)覺客戶端還是不能正常顯示文字緣由:我們將response緩沖區(qū)的編碼設(shè)置成utf-8,但掃瞄器的默認(rèn)編碼是本地系統(tǒng)的編碼,由

4、于我們都是中文系統(tǒng),所以客戶端掃瞄器的默認(rèn)編碼是gbk,我們可以手動修改掃瞄器的編碼是utf-8。我們還可以在代碼中指定掃瞄器解析頁面的編碼方式,通過response的setcontenttype(string type)辦法指定頁面解析時的編碼是utf-8response.setcontenttype("text/html;charset=utf-8"); 上面的代碼不僅可以指定掃瞄器解析頁面時的編碼,同時也內(nèi)含setcharacterencoding的功能,所以在實際開發(fā)中只要編寫 response.setcontenttype("te

5、xt/html;charset=utf-8");就可以解決頁面輸出中文亂碼問題。 (2)響應(yīng)頭設(shè)置字節(jié)servletoutputstream servlet=response.getoutputstream()獲得字節(jié)流,通過該字節(jié)流的write(byte bytes)可以向response緩沖區(qū)中寫入字節(jié),在由tomcat服務(wù)器將字節(jié)內(nèi)容組成http響應(yīng)返回給掃瞄器。設(shè)置定時刷新的頭response.setheader("refresh", "5;url=");7案例-完成文件下載 1 /獲得要下載的文

6、件的名稱 2 string filename =request.getparameter("filename"); 3 /解決中文參數(shù)亂碼 4 filename=new string(filename.getbytes("iso8859-1"),"utf-8");/編碼 5 6 /獵取哀求頭中的user-agent 7 string agent=request.getheader("user-agent"); 8 /按照不同掃瞄器,舉行不同編碼 9 s

7、tring filenameencoder="" 10 if(agent.contains("msie") /ie掃瞄器11 filenameencoder=urlencoder.encode(filename,"utf-8");12 filenameencoder=filenameencoder.replace("+"," ");13 else if(agent.contains("firefox

8、") /火狐掃瞄器14 base64encoder base64encoder =new base64encoder();15 filenameencoder="=?utf-8?b?"16 +base64encoder.encode(filename.getbytes("utf-8") + "?="17 else 18 /其他掃瞄器19 filenameencoder=urlencoder.encode(filename,"utf-8&quot

9、;);20 2122 /要下載的這個文件的類型-客戶端通過文件的mime類型去區(qū)別類型23 response.setcontenttype(this.getservletcontext().getmimetype(filename);24 /告知客戶端該文件不是挺直解析 而是以附件形式打開(下載)25 response.setheader("content-disposition", "attachment;filename="+filenameencoder);26 /獵取文件的肯定路徑27 string path =this.getservletcontext().getrealpath("download/"+filename);28 /獲得該文件的輸入流29 inputstream in =new fileinputstream(path);30 /獲得輸出流-通過response獲得的輸出流 用于向客戶端寫內(nèi)容31 servletoutputstream out =response.getoutputstream

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論