2018-03-04 Filter类(六):实现数据压缩

笔记如下
//response.getOutputStream().print("hahaha");
        
        String data="alsjdalskjdlasjd123123123123123123123123dfgfvsdvdsgsdgsdgsgalsjdalskjdlasjd123"
                + "123123123123123123123dfgfvsdvdsgsdgsdgsgalsjdalskjdlasjd1231231231231adasdasdasd"
                + "23123123123dfgfvsdvdsgsdgsdgsg23123123123dfgfvsdvdsgsdgsdgsg23123123123dfgfvsdvg"
                + "sdgsg23123123123dfgfvsdvdsgsdgsdgsgsdgsg23123123123dfgfvsdvdsgsdgsdgsg";
        
        byte[] b = data.getBytes();
        System.out.println("压缩前" + b.length);
        
        //底层流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        
        //采用gzip压缩
        //这里压缩的时候输出一个输出流,这里的输出流是一个底层流 
        GZIPOutputStream gout = new GZIPOutputStream(baos);
        gout.write(b);
        
        //由于数据是写到底层流baos中的,gout 默认有缓冲区的.
        
        gout.close();//close()确保可以写到boas中去
        
        
        b = baos.toByteArray();
        
        System.out.println("压缩后" + b.length);
        
        //告诉浏览器 需要 解压数据 --- 通过http响应头
        response.setHeader("content-encoding", "gzip");
        
        response.setContentLength(b.length);//数组的长度
        

演示:


2018-03-04 Filter类(六):实现数据压缩_第1张图片
4.png

你可能感兴趣的:(2018-03-04 Filter类(六):实现数据压缩)