• 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     }
  • 相关阅读:
    PowerShell脚本自动设置安卓手机wifi代理
    Python写一个Windows下的android设备截图工具
    Auty框架表现篇——python flask框架实践
    服务器端查看log的shell脚本
    软件测试体系划分与职业素养
    Python Locust性能测试框架实践
    一步一步教你编写与搭建自动化测试框架——python篇
    Auty自动化测试框架第七篇——添加动作库和常量文件库
    Auty自动化测试框架第六篇——垃圾代码回收、添加suite支持
    Auty自动化测试框架第四篇——生成测试结果报告
  • 原文地址:https://www.cnblogs.com/yanghaoyu0624/p/11805303.html
Copyright © 2020-2023  润新知