1 HttpServletResponse概述
2 Response 运行过程
3 通过抓包工具抓取Http响应
4 响应行
5 设置响应头
set 和add的区别
6 重定向
需要完成分析‘
6 设置响应体
6.1 设置文本和乱码
???????//设置response查询的码表 ???????//response.setCharacterEncoding("UTF-8"); ???????????????//通过一个头 Content-Type 告知客户端使用何种码表 ???????//response.setHeader("Content-Type", "text/html;charset=UTF-8"); ???????????????response.setContentType("text/html;charset=UTF-8"); ???????????????PrintWriter writer = response.getWriter(); ???????//writer.write("hello response!!!"); ???????writer.write("你好");
6.2 设置字节
6.3 文件下载
???//获得要下载的文件的名称 ???????String filename = request.getParameter("filename");//a.flv ???????//要下载的这个文件的类型-----客户端通过文件的MIME类型去区分类型 ???????response.setContentType(this.getServletContext().getMimeType(filename)); ???????//告诉客户端该文件不是直接解析 而是以附件形式打开(下载) ???????response.setHeader("Content-Disposition", "attachment;filename="+filename); ???????//获取文件的绝对路径 ???????String path = this.getServletContext().getRealPath("download/"+filename); ???????//获得该文件的输入流 ???????InputStream in = new FileInputStream(path); ???????//获得输出流---通过response获得的输出流 用于向客户端写内容 ???????ServletOutputStream out = response.getOutputStream(); ???????//文件拷贝的模板代码 ???????int len = 0; ???????byte[] buffer = new byte[1024]; ???????while((len=in.read(buffer))>0){ ???????????out.write(buffer, 0, len); ???????} ???????in.close(); ???????//out.close();
6.4 文件下载(中文)
???????//*******文件名称是中文的下载******* ???????//获得要下载的文件的名称 ???????String filename = request.getParameter("filename");//????.jpg ???????//解决获得中文参数的乱码----下节课讲 ???????filename = new String(filename.getBytes("ISO8859-1"),"UTF-8");//美女.jpg ???????????????//获得请求头中的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"); ???????????????????????} ???????//要下载的这个文件的类型-----客户端通过文件的MIME类型去区分类型 ???????response.setContentType(this.getServletContext().getMimeType(filename)); ???????//告诉客户端该文件不是直接解析 而是以附件形式打开(下载)----filename="+filename 客户端默认对名字进行解码 ???????response.setHeader("Content-Disposition", "attachment;filename="+filenameEncoder); ???????//获取文件的绝对路径 ???????String path = this.getServletContext().getRealPath("download/"+filename); ???????//获得该文件的输入流 ???????InputStream in = new FileInputStream(path); ???????//获得输出流---通过response获得的输出流 用于向客户端写内容 ???????ServletOutputStream out = response.getOutputStream(); ???????//文件拷贝的模板代码 ???????int len = 0; ???????byte[] buffer = new byte[1024]; ???????while((len=in.read(buffer))>0){ ???????????out.write(buffer, 0, len); ???????} ???????in.close(); ???????//out.close();
7 response细节
JSP-response(HttpServletResponse)
原文地址:https://www.cnblogs.com/liu-wang/p/8594153.html