日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java Web学习(七)HttpServletResponse(客户端响应)

發(fā)布時(shí)間:2024/4/17 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Web学习(七)HttpServletResponse(客户端响应) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文借鑒:孤傲蒼狼(特此感謝!)

一、定義

  HttpServletResponse對(duì)象代表服務(wù)端的響應(yīng),通過(guò)這個(gè)對(duì)象提供的方法,可以向客戶機(jī)輸出數(shù)據(jù)。

二、常用方法

PS:在JavaWeb開(kāi)發(fā)中,只要是寫URL地址,那么建議最好以"/"開(kāi)頭,也就是使用絕對(duì)路徑的方式,如果"/"是給服務(wù)器用的,則代表當(dāng)前的web工程,如果"/"是給瀏覽器用的,則代表webapps目錄。

PS:也可以使用request.getContextPath()來(lái)代替"/項(xiàng)目名稱"的方式,這樣更加靈活。

    /*** 1.向客戶端(瀏覽器)發(fā)送數(shù)據(jù)* 原理:Servlet程序向ServletOutputStream或PrintWriter對(duì)象中寫入的數(shù)據(jù)將被Servlet引擎從response里面獲取,Servlet引擎將這些數(shù)據(jù)當(dāng)作響應(yīng)消息的正文,然后再與響應(yīng)狀態(tài)行和各響應(yīng)頭組合后輸出到客戶端。* PS:getOutputStream和getWriter這兩個(gè)方法互相排斥,調(diào)用了其中的任何一個(gè)方法后,就不能再調(diào)用另一方法。* PS:Serlvet的service方法結(jié)束后,Servlet引擎將檢查getWriter或getOutputStream方法返回的輸出流對(duì)象是否已經(jīng)調(diào)用過(guò)close方法,如果沒(méi)有,Servlet引擎將調(diào)用close方法關(guān)閉該輸出流對(duì)象。*/OutputStream outputStream = response.getOutputStream();//獲取OutputStream輸出流(輸出二進(jìn)制數(shù)據(jù)PrintWriter out = response.getWriter();//獲取PrintWriter輸出流(輸出文本數(shù)據(jù)/*** 2.設(shè)置響應(yīng)頭相關(guān)(設(shè)置響應(yīng)頭可以控制瀏覽器的行為)*/response.setCharacterEncoding("UTF-8");//設(shè)置將數(shù)據(jù)以"UTF-8"編碼輸出到客戶端瀏覽器response.setHeader("content-type", "text/html;charset=UTF-8");//控制瀏覽器以UTF-8的編碼顯示數(shù)據(jù)response.setStatus(HttpServletResponse.SC_OK);//設(shè)置響應(yīng)碼response.setHeader("refresh", "5");//控制瀏覽器每隔5秒鐘刷新一次response.setContentType("image/jpeg");//告訴瀏覽器以該類型處理數(shù)據(jù)(控制瀏覽器以圖片的方式打開(kāi))response.setDateHeader("expries", -1);//控制瀏覽器不緩存數(shù)據(jù)response.setHeader("Cache-Control", "no-cache");//控制瀏覽器不緩存數(shù)據(jù)response.setHeader("Pragma", "no-cache");//控制瀏覽器不緩存數(shù)據(jù)/*** 3.重定向*///法1:調(diào)用sendRedirect()方法response.sendRedirect("重定向地址");//重定向(內(nèi)部的實(shí)現(xiàn)原理:使用response設(shè)置302狀態(tài)碼和設(shè)置location響應(yīng)頭實(shí)現(xiàn)重定向)//法2:設(shè)置響應(yīng)頭的Location屬性和Status狀態(tài)碼response.setHeader("Location", "跳轉(zhuǎn)地址");//設(shè)置跳轉(zhuǎn)地址response.setStatus(HttpServletResponse.SC_FOUND);//設(shè)置302狀態(tài)碼,等同于response.setStatus(302);

?

三、字符解析詳解(中文亂碼的問(wèn)題)

/*** 服務(wù)器響應(yīng)(中文亂碼問(wèn)題)* PS:在開(kāi)發(fā)過(guò)程中,如果希望服務(wù)器輸出什么瀏覽器就能看到什么,那么在服務(wù)器端都要以字符串的形式進(jìn)行輸出(無(wú)論輸出的是字符還是數(shù)字)。*/ public class ResponseDemo extends HttpServlet {/*** 輸出中文** @param response* @throws IOException*/public void outputChinese(HttpServletResponse response) throws IOException {String data = "中國(guó)";/*** 1.使用OutputStream流向客戶端瀏覽器輸出中文數(shù)據(jù)* PS:服務(wù)器端可以通過(guò)設(shè)置響應(yīng)頭控制瀏覽器的行為* 例:設(shè)置響應(yīng)頭控制瀏覽器以UTF-8的編碼顯示數(shù)據(jù):response.setHeader("content-type", "text/html;charset=UTF-8");*/byte[] dataByteArr = data.getBytes("UTF-8");//將字符轉(zhuǎn)換成字節(jié)數(shù)組,指定以UTF-8編碼進(jìn)行轉(zhuǎn)換(將字符轉(zhuǎn)換成字節(jié)數(shù)組的過(guò)程,這個(gè)過(guò)程中一定會(huì)去查碼表,如果是中文的操作系統(tǒng)環(huán)境,默認(rèn)就是查找查GB2312的碼表)OutputStream outputStream = response.getOutputStream();//獲取OutputStream輸出流response.setHeader("content-type", "text/html;charset=UTF-8");//通過(guò)設(shè)置響應(yīng)頭控制瀏覽器以UTF-8的編碼顯示數(shù)據(jù),如果不加這句話,那么瀏覽器顯示的將是亂碼outputStream.write(dataByteArr);//使用OutputStream流向客戶端輸出字節(jié)數(shù)組/*** 2.使用PrintWriter流向客戶端瀏覽器輸出中文數(shù)據(jù)* PS:當(dāng)需要向?yàn)g覽器輸出字符數(shù)據(jù)時(shí),使用PrintWriter比較方便,省去了將字符轉(zhuǎn)換成字節(jié)數(shù)組那一步。*/response.setCharacterEncoding("UTF-8");//設(shè)置將字符以"UTF-8"編碼輸出到客戶端瀏覽器PrintWriter out = response.getWriter();//獲取PrintWriter輸出流(PS:這句代碼必須放在response.setCharacterEncoding("UTF-8");之后,否則response.setCharacterEncoding("UTF-8")這行代碼的設(shè)置將無(wú)效,瀏覽器顯示的時(shí)候還是亂碼)response.setHeader("content-type", "text/html;charset=UTF-8");//設(shè)置響應(yīng)頭,控制瀏覽器以指定的字符編碼編碼進(jìn)行顯示out.write(data);//使用PrintWriter流向客戶端輸出字符 }}

?

四、文件下載

PS:編寫文件下載功能時(shí)推薦使用OutputStream流,避免使用PrintWriter流,因?yàn)镺utputStream流是字節(jié)流,可以處理任意類型的數(shù)據(jù),而PrintWriter流是字符流,只能處理字符數(shù)據(jù),如果用字符流處理字節(jié)數(shù)據(jù),會(huì)導(dǎo)致數(shù)據(jù)丟失。

  /*** 下載文件,通過(guò)OutputStream流* @param response* @throws FileNotFoundException* @throws IOException*/private void downloadFileByOutputStream(HttpServletResponse response)throws FileNotFoundException, IOException {//1.獲取要下載的文件的絕對(duì)路徑String realPath = this.getServletContext().getRealPath("/download/1.JPG");//2.獲取要下載的文件名String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);//3.設(shè)置content-disposition響應(yīng)頭控制瀏覽器以下載的形式打開(kāi)文件(PS:中文文件名的情況要使用URLEncoder.encode方法進(jìn)行編碼:response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));)response.setHeader("content-disposition", "attachment;filename="+fileName);//4.獲取要下載的文件輸入流InputStream in = new FileInputStream(realPath);int len = 0;//5.創(chuàng)建數(shù)據(jù)緩沖區(qū)(一次讀取1024個(gè)字節(jié))byte[] buffer = new byte[1024];//6.通過(guò)response對(duì)象獲取OutputStream流OutputStream out = response.getOutputStream();//7.將FileInputStream流寫入到buffer緩沖區(qū)while ((len = in.read(buffer)) > 0) {//8.使用OutputStream將緩沖區(qū)的數(shù)據(jù)輸出到客戶端瀏覽器out.write(buffer,0,len);}in.close();}

?

轉(zhuǎn)載于:https://www.cnblogs.com/riches/p/11413798.html

總結(jié)

以上是生活随笔為你收集整理的Java Web学习(七)HttpServletResponse(客户端响应)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线日韩 | 91麻豆一区二区 | 欧美美女性生活 | 玉女心经是什么意思 | 午夜诱惑痒痒网 | 日韩 欧美 国产 综合 | 91亚洲国产成人精品一区二三 | 久久成人精品一区二区 | 久久五月天婷婷 | 国产欧美一区二区三区视频在线观看 | 亚洲狼人色 | 伊人精品| 放几个免费的毛片出来看 | 啪啪免费 | 91久久久久久久久久久久久 | 天美麻花果冻视频大全英文版 | 日韩激情在线观看 | 国产伦一区二区 | 成人福利av| 蜜臀久久精品 | 国产性在线 | 欧美成人a视频 | 奇米影视777第四色 2019中文字幕在线免费观看 | 制服诱惑一区 | 男女操操视频 | a视频 | 在线免费视频观看 | 西西人体做爰大胆gogo直播 | 香蕉视频在线观看黄 | 亚洲一区二区三区久久久成人动漫 | 一区久久 | 强伦人妻一区二区三区 | 就要操就要射 | 99精品在线免费视频 | 樱花电影最新免费观看国语版 | 成人小视频在线 | 欧美综合视频 | 茄子视频懂你更多在线观看 | 国产一级一级 | 日本高清在线播放 | 国产自产自拍 | 欧美一级二级视频 | 日韩欧美在线观看一区二区三区 | 影音先锋二区 | 欧美一级影院 | 日韩爱爱爱 | 亚洲午夜精品一区二区三区 | 人人爽视频 | 日本少妇18p| 亚洲春色另类 | 日本高清不卡二区 | 国产做爰视频免费播放 | 欧美久久久久久又粗又大 | 夜夜爽妓女8888视频免费观看 | 国产一级片黄色 | 最近的中文字幕在线看视频 | 好男人.www| 天天干夜夜干 | 精品久久精品久久 | 欧美一区二区三区成人精品 | 五月少妇| 亚洲激情图片区 | 中国黄色网址 | 爱情岛论坛自拍 | 999久久久精品 | 中文字幕免费视频 | 亚洲av无码乱码国产麻豆 | 中国大陆一级毛片 | 欧美成人秋霞久久aa片 | 国产免费久久 | 丁香花电影在线观看免费高清 | 97国产视频 | 久久久无码精品亚洲无少妇 | av网站不卡 | 国产传媒一区二区 | 久久视奸 | 亚洲欧美婷婷 | 日韩av三级在线 | 日本黄色小片 | www.x日本 | 四虎影院www | 亚洲成人aa | 亚洲一区二区视频 | 99自拍视频 | 国产精品二区一区二区aⅴ污介绍 | 桃色一区二区 | 伊人一区二区三区四区 | 91精品国产一区二区三竹菊影视 | 波多野结衣在线免费视频 | 亚洲av永久无码精品一区二区国产 | 91操人视频 | 尤物av在线 | 熟妇高潮一区二区 | 免费av国产 | 一区二区三区播放 | 亚洲国产剧情 | av软件在线观看 | 久一视频在线观看 | a级淫片|