HttpServletResponse 类

一、常用方法:
  设置相应行
    1、状态码:setStatus(int sc);
  设置相应头
    1、追加头信息:addHeader(String name,String value);
    2、重置,设置头信息:setHeader(String name,String value);
    3、对应特殊类型的头信息用 :addIntHeader和setIntHeader(数字),addDateHeader和setDateHeader(日期)
  设置响应体:
    1、字节流:通过 response.getOutputStream() 获取字节输入流。

      输入文字:

 1     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2 //        方法一
 3 //        1、获取字节输出流对象
 4         ServletOutputStream out = response.getOutputStream();
 5 //        2、解决乱码
 6         response.setHeader("Content-Type", "text/html;charset=UTF-8");
 7 //        3、输出,并设置解析编码表
 8         out.write("不错呦".getBytes("UTF-8"));
 9         
10 //        方法二
11         response.setContentType("text/html;charset=UTF-8");
12         out.write("不错呦2".getBytes("UTF-8"));
13     }

    输出文件:

 1     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2 //        获取文件的绝对路径
 3         String realPath = getServletContext().getRealPath("/download/测试.png");
 4 //        明确数据源
 5         FileInputStream fis = new FileInputStream(realPath);
 6 //        明确目的地
 7         ServletOutputStream out = response.getOutputStream();
 8 //        开始复制
 9         byte[] bytes = new byte[1024];
10         int len = 0;
11         while ((len = fis.read(bytes) )!= -1) {
12             out.write(bytes, 0, len);
13         }
14 //        释放资源
15         fis.close();
16     }


    2、字符流:通过 response.getWriter().print("aaa"); 往前台输出信息

     输入文本:

    

 1     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2 //        方法一
 3 //        1、设置字符缓冲区的编码表
 4         response.setCharacterEncoding("utf-8");
 5 //        2、设置响应有的编码表
 6         response.setHeader("Content-Type", "text/html;charset=UTF-8");
 7 //        3、输出
 8         response.getWriter().println("不错呦");
 9         
10 //        方法二
11         response.setContentType("text/html;charset=UTF-8");
12         response.getWriter().println("不错呦");
13     }

    

  文件下载:

    前台html页面:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>Insert title here</title>
 6 </head>
 7 <body>
 8     <!-- 设置请求的Servlet并设置参数,指明文件名 -->
 9     <a href="/WEB04/Test01?filename=测试.png">测试.png</a>
10     <a href="/WEB04/Test01?filename=a.zip">a.zip</a>
11     <a href="/WEB04/Test01?filename=a.txt">a.txt</a>
12     <a href="/WEB04/Test01?filename=a.wmv">a.wmv</a>
13 </body>
14 </html>

  servlet代码:

 1 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2 //        获取文件名
 3         String filename = request.getParameter("filename");
 4 //        获取文件的绝对路径
 5         String path = getServletContext().getRealPath("/download/" + filename);
 6 //        明确数据源
 7         FileInputStream fis = new FileInputStream(path);
 8 //        明确目的地
 9         ServletOutputStream out = response.getOutputStream();
10 
11 //        获取请求头信息,用户判断什么浏览器,并设置相应解决中文乱码的问题
12         String header = request.getHeader("User-Agent");
13         String filenameEncoder = "";
14         if (header.contains("MSIE")) {
15             // IE浏览器
16             filenameEncoder = URLEncoder.encode(filename, "utf-8");
17             filenameEncoder = filenameEncoder.replace("+", " ");
18         } else if (header.contains("Firefox")) {
19             // 火狐浏览器
20             BASE64Encoder base64Encoder = new BASE64Encoder();
21             filenameEncoder = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
22         } else {
23             // 其它浏览器
24             filenameEncoder = URLEncoder.encode(filename, "utf-8");
25         }
26 //        设置文件以附件形式打开,并设置下载的文件名
27         response.setHeader("Content-Disposition", "attachment;filename=" + filenameEncoder);
28 
29 //        开始复制
30         byte[] bytes = new byte[1024];
31         int len = 0;
32         while ((len = fis.read(bytes)) != -1) {
33             out.write(bytes, 0, len);
34         }
35         fis.close();
36     }
原文地址:https://www.cnblogs.com/yanghaoyu0624/p/11805303.html