zoukankan      html  css  js  c++  java
  • JSP-response(HttpServletResponse)

    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细节 


    作者:8亩田
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.

    本文如对您有帮助,还请多帮 【推荐】 下此文。
    如果喜欢我的文章,请关注我的公众号
    如果有疑问,请下面留言

    学而不思则罔 思而不学则殆
  • 相关阅读:
    欧几里德算法实现求两个正整数的最大公因子
    C#委托、泛型
    C与C++中的time相关函数(转载)
    【转】温州的南拳
    前端面试题
    vuecli卸载旧版,再重新安装后还显示的是旧的版本
    不定宽高的div水平、垂直居中问题
    解决JS中取URL地址中的参数中文乱码
    移动vue项目,启动错误:Module build failed: Error: No PostCSS Config found in:
    codeblocks colour theme
  • 原文地址:https://www.cnblogs.com/liu-wang/p/8594153.html
Copyright © 2011-2022 走看看