HttpServletResponse
2020-12-22 03:27
标签:contains 开始 Servle down 请求 base 写入 字符串 img 1.Response响应方法 设置响应行 setStatus()设置响应行状态码 设置响应头 setHeader()键值对形式 重定向 response.sendRedirect();需要状态码是302
设置响应体 getWriter()将字符串返回到浏览器 解决中文乱码问题 解决response缓冲区乱码和解决浏览器乱码 response.setContentType("text/html;charset=UTF-8"); 响应头设置字节 ServletOutputStream类,将文件写入浏览器 2.文件下载案例 步骤分析: 1.通过request获取文件的名字 2.解决get请求乱码问题 3.获取到agent头,明确是什么浏览器 4.解决浏览器兼容 5.明确数据源 6.明确目的地 7.开始复制 8.释放资源 知识点: 告知浏览器文件类型 response.setContentType(getServletContext.getMimeType()) getMimeType()返回指定文件名的MIME类型 设置Content-Disposition头,告知文件类型 response.setHeader("Content-Disposition", "attachment;filename="+filenameEncoder);//设置文件名 HttpServletResponse 标签:contains 开始 Servle down 请求 base 写入 字符串 img 原文地址:https://www.cnblogs.com/jiesi123/p/13984289.html//获取用户要下载的文件名
String filename=request.getParameter("filename");
//解决get请求乱码问题
filename=new String(filename.getBytes("ISO8859-1"),"UTF-8");
//获取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);//设置文件名
//获取文件绝对路径
String path=getServletContext().getRealPath("download/"+filename);
//获取文件源,明确数据源
FileInputStream fis=new FileInputStream(path);
//明确目的地
ServletOutputStream out=response.getOutputStream();
//开始复制
int len=0;
byte[] bytes=new byte[1024];
while((len=fis.read(bytes))!=-1) {
out.write(bytes, 0, len);
}
//释放资源
fis.close();
}
文章标题:HttpServletResponse
文章链接:http://soscw.com/index.php/essay/37478.html