电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java response響應體和文件下載實現原理

瀏覽:40日期:2022-09-01 09:49:54

通過response 設置響應體:

響應體設置文本:

PrintWriter getWriter()

獲得字符流,通過字符流的write(String s)方法可以將字符串設置到response 緩沖區中,隨后Tomcat會將response緩沖區中的內容組裝成Http響應返回給瀏覽 器端。

關于設置中文的亂碼問題

原因:response緩沖區的默認編碼是iso8859-1,此碼表中沒有中文,可以通過 response的setCharacterEncoding(String charset) 設置response的編碼,

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

原因:我們將response緩沖區的編碼設置成UTF-8,但瀏覽器的默認編碼是本地系統的編碼,因為我們都是中文系統,所以客戶端瀏覽器的默認編碼是GBK,我們可以手動修改瀏覽器的編碼是UTF-8。

我們還可以在代碼中指定瀏覽器解析頁面的編碼方式,通過response的setContentType(String type)方法指定頁面解析時的編碼是UTF-8。

response.setContentType('text/html;charset=UTF-8');

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

package com.oracle;import java.io.FileInputStream;import java.io.IOException;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import sun.misc.BASE64Encoder;public class DownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //服務器獲取文件名(文件名是中文的話,獲取的時候就成了亂碼了) String filename = request.getParameter('file');//??.png //get請求中---解決文件名中文亂碼問題 filename =new String(filename.getBytes('ISO-8859-1'),'UTF-8');//亂碼.png//獲取User-Agent獲取客戶端瀏覽器到底是哪個瀏覽器 String agent=request.getHeader('User-Agent'); String filenameEncoder=''; if (agent.contains('MSIE')) {// IE瀏覽器filenameEncoder= URLEncoder.encode(filename, 'utf-8');filenameEncoder= filenameEncoder.replace('+', ' '); } else if (agent.contains('Firefox')) {// 火狐瀏覽器 BASE64Encoder base64Encoder = new BASE64Encoder();filenameEncoder= '=?utf-8?B?' + base64Encoder.encode(filename.getBytes('utf-8')) + '?='; } else {// 其它瀏覽器filenameEncoder= URLEncoder.encode(filename, 'utf-8'); } //告知瀏覽器文件的類型(響應體) response.setContentType(getServletContext().getMimeType(filename)); //告知瀏覽器以附件的方式提供下載功能 而不是解析 response.setHeader('Content-Disposition','attachment;filename='+filenameEncoder); //服務器獲取后開始進行復制的程序:獲取字節輸出流 ServletOutputStream sos = response.getOutputStream(); //獲取數據源的絕對路徑 String realpath = getServletContext().getRealPath('download/'+filename); //獲取字節輸入流 FileInputStream fis =new FileInputStream(realpath); //開始復制 byte[] bytes=new byte[1024]; int len=0; while((len=fis.read(bytes))!=-1){ sos.write(bytes, 0, len); } //釋放資源 fis.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}

<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%><!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'><html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Insert title here</title></head><body> <a href='http://www.hdgsjgj.cn/WEB02/DownLoadServlet?filename=a.txt' rel='external nofollow' >a.txt</a> <a href='http://www.hdgsjgj.cn/WEB02/DownLoadServlet?filename=a.wmv' rel='external nofollow' >a.wmv</a> <a href='http://www.hdgsjgj.cn/WEB02/DownLoadServlet?filename=科比.png' rel='external nofollow' >科比.png</a> <a href='http://www.hdgsjgj.cn/WEB02/DownLoadServlet?filename=a.zip' rel='external nofollow' >a.zip</a></body></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 颗粒机,颗粒机组,木屑颗粒机-济南劲能机械有限公司 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 深圳离婚律师咨询「在线免费」华荣深圳婚姻律师事务所专办离婚纠纷案件 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 石家庄律师_石家庄刑事辩护律师_石家庄取保候审-河北万垚律师事务所 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 紧急泄压人孔_防爆阻火器_阻火呼吸阀[河北宏泽石化] | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 氢氧化钙设备_厂家-淄博工贸有限公司 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 东莞海恒试验仪器设备有限公司| 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 诗词大全-古诗名句 - 古诗词赏析 | 电动百叶窗,开窗器,电动遮阳百叶,电动开窗机生产厂家-徐州鑫友工控科技发展有限公司 | 达利园物流科技集团- | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 柔性输送线|柔性链板|齿形链-上海赫勒输送设备有限公司首页[输送机] | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 高尔夫球杆_高尔夫果岭_高尔夫用品-深圳市新高品体育用品有限公司 | 合肥注册公司|合肥代办营业执照、2024注册公司流程 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 全自动包衣机-无菌分装隔离器-浙江迦南科技股份有限公司 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 复盛空压机配件-空气压缩机-复盛空压机(华北)总代理 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 |