<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    vickzhu

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      151 隨筆 :: 0 文章 :: 34 評論 :: 0 Trackbacks


    將response內響應給使用者的內容,使用GZIP壓縮的方式回傳給瀏覽器,而IE5和NS6也都有支持Gzip的壓縮格式。
    這個方法在之前就有人提出過,因為是讓網頁在輸出時經過壓縮,可以讓傳輸量變小很多,雖然現在的網絡頻寬對于用來看網頁已經綽綽有余,但是檔案大小太大的網頁還是會造成一定的影響。
    經過Gzip壓縮過的網頁,檔案大小可以到原本壓縮前的20%。

    package com.jsptw.filter;
    import java.io.*;
    import java.util.zip.GZIPOutputStream;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class GZIPEncodeFilter implements Filter {
          public void init(FilterConfig filterConfig) {}
          public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain)
                                          throws IOException, ServletException {       
            String transferEncoding = getGZIPEncoding((HttpServletRequest)request);       
            if (transferEncoding == null) {           
              chain.doFilter(request, response);       
            } else{         
              ((HttpServletResponse)response).setHeader("Content-Encoding", transferEncoding);
                GZIPEncodableResponse wrappedResponse = new GZIPEncodableResponse((HttpServletResponse)response);
                chain.doFilter(request, wrappedResponse);         
                wrappedResponse.flush();       
            }   
          }   
          public void destroy() {}   
          private static String getGZIPEncoding(HttpServletRequest request) {       
            String acceptEncoding = request.getHeader("Accept-Encoding");       
              if (acceptEncoding == null)
                return null;       
              acceptEncoding = acceptEncoding.toLowerCase();       
              if (acceptEncoding.indexOf("x-gzip") >= 0) {
                return "x-gzip";
              }       
              if (acceptEncoding.indexOf("gzip") >= 0) {           
                return "gzip";       
              }       
              return null;   
          }   
         
          private class GZIPEncodableResponse extends HttpServletResponseWrapper {       
            private GZIPServletStream wrappedOut;       
              public GZIPEncodableResponse(HttpServletResponse response) throws IOException {          
                super(response);           
                  wrappedOut = new GZIPServletStream(response.getOutputStream());       
              }       
              public ServletOutputStream getOutputStream() throws IOException {           
                return wrappedOut;       
              }       
              private PrintWriter wrappedWriter;       
              public PrintWriter getWriter() throws IOException {           
                if (wrappedWriter == null) {               
                    wrappedWriter = new PrintWriter( new OutputStreamWriter( getOutputStream(), getCharacterEncoding()));            }           
                     return wrappedWriter;       
                  }       
              public void flush() throws IOException {           
                if (wrappedWriter != null) {              
                    wrappedWriter.flush();           
                  }          
                  wrappedOut.finish();       
              }   
          }   
         
          private class GZIPServletStream extends ServletOutputStream {       
            private GZIPOutputStream outputStream;       
              public GZIPServletStream(OutputStream source) throws IOException {           
             outputStream = new GZIPOutputStream(source);       
           }       
           public void finish() throws IOException {
             OutputStream.finish();       
           }       
          public void write(byte[] buf) throws IOException {           
            outputStream.write(buf);       
          }       
          public void write(byte[] buf, int off, int len) throws IOException {           
            outputStream.write(buf, off, len);       
          }       
          public void write(int c) throws IOException {           
            outputStream.write(c);       
          }       
          public void flush() throws IOException {           
            outputStream.flush();       
          }      
          public void close() throws IOException {           
            outputStream.close();        
          }   
        }
    }


    web.xml中的設定為:
    <filter>       
    <filter-name>GZIPEncoder</filter-name>       
    <filter-class>com.jsptw.filter.GZIPEncodeFilter</filter-class>
    </filter>

    <filter-mapping> 
    <filter-name> GZIPEncoder</filter-name> 
    <url-pattern>/*</url-pattern>
    </filter-mapping> 

     

    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/a_heng/archive/2009/09/22/4579979.aspx

    posted on 2009-11-30 16:26 筱 筱 閱讀(289) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 在线看片韩国免费人成视频| 日韩精品无码一区二区三区免费| 韩国免费一级成人毛片| 久久精品亚洲中文字幕无码麻豆| 97人妻精品全国免费视频| 日韩亚洲变态另类中文| 一个人免费观看日本www视频| 免费乱理伦在线播放| 精品免费AV一区二区三区| 国产午夜免费福利红片| 亚洲成a人无码亚洲成av无码| 成全影视免费观看大全二| 亚洲精品色播一区二区| 大香人蕉免费视频75| 黄色毛片视频免费| 亚洲小说区图片区另类春色| 免费网站观看WWW在线观看| 国产精品亚洲精品日韩已满| 国产精品免费观看调教网| 亚洲黄色在线视频| 18禁超污无遮挡无码免费网站国产| 亚洲色偷偷色噜噜狠狠99| 国产乱子伦精品免费女| 中国一级全黄的免费观看| 亚洲最大福利视频网站| 一二三四在线播放免费观看中文版视频 | 亚洲自偷自拍另类12p| 久久久久久精品成人免费图片 | 无人在线直播免费观看| 亚洲欧美国产国产一区二区三区 | 国产免费av片在线看| 国产精品亚洲AV三区| 亚洲线精品一区二区三区| 真实国产乱子伦精品免费| 亚洲精品又粗又大又爽A片| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲精品在线播放| 日日AV拍夜夜添久久免费| 国产免费播放一区二区| 亚洲香蕉在线观看| 亚洲毛片av日韩av无码|