解决方案 »

  1.   

    自己写个算法压缩下。。
    不知道网上有木有对java和js压缩的包
      

  2.   


    可以自己写算法来进行压缩,这个没问题,关键是这部分是spring自动进行处理的,我应该写到哪里集成进去?
      

  3.   

    效率提升如何,要看你json的大小了,当然是越大越明显import java.io.ByteArrayInputStream;
     import java.io.ByteArrayOutputStream;
     import java.io.IOException;
     import java.util.zip.GZIPInputStream;
     import java.util.zip.GZIPOutputStream;
      public class GZIP {
     
      
         /**
          * 字符串的压缩
          * 
          * @param str
          *            待压缩的字符串
          * @return    返回压缩后的字符串
          * @throws IOException
          */
         public static String compress(String str) throws IOException {
             if (null == str || str.length() <= 0) {
                 return str;
             }
             // 创建一个新的 byte 数组输出流
             ByteArrayOutputStream out = new ByteArrayOutputStream();
             // 使用默认缓冲区大小创建新的输出流
             GZIPOutputStream gzip = new GZIPOutputStream(out);
             // 将 b.length 个字节写入此输出流
             gzip.write(str.getBytes());
             gzip.close();
             // 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串
             return out.toString("ISO-8859-1");
         }
         
         /**
          * 字符串的解压
          * 
          * @param str
          *            对字符串解压
          * @return    返回解压缩后的字符串
          * @throws IOException
          */
         public static String unCompress(String str) throws IOException {
             if (null == str || str.length() <= 0) {
                 return str;
             }
             // 创建一个新的 byte 数组输出流
             ByteArrayOutputStream out = new ByteArrayOutputStream();
             // 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组
             ByteArrayInputStream in = new ByteArrayInputStream(str
                     .getBytes("ISO-8859-1"));
             // 使用默认缓冲区大小创建新的输入流
             GZIPInputStream gzip = new GZIPInputStream(in);
             byte[] buffer = new byte[256];
             int n = 0;
             while ((n = gzip.read(buffer)) >= 0) {// 将未压缩数据读入字节数组
                 // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte数组输出流
                 out.write(buffer, 0, n);
             }
             // 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串
             return out.toString("GBK");
         }
     
     }
      

  4.   

    哥们,这个我知道gzip的操作接口,只是不知道在spring使用responseBody注解后,重写什么类可以让spring把自动转换的json进行压缩?
      

  5.   

    nginx 或apache服务器就带压缩啊