⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compressionresponsewrapper.java

📁 这是一个DVD目录管理系统
💻 JAVA
字号:
package com.dvd.web;

// Servlet imports
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.ServletOutputStream;
// I/O imports
import java.io.IOException;
import java.io.PrintWriter;
import java.io.OutputStreamWriter;
import java.util.zip.GZIPOutputStream;

/**
 * This response wrapper allows a filter to compression the response
 * generated after processing the request.
 */
class CompressionResponseWrapper extends HttpServletResponseWrapper {
    
    /** This variable holds the output stream compression buffer. */
    private GZIPServletOutputStream gzsos = null;
    
    /** This variable holds the PW object sent to the servlet. */
    private PrintWriter pw = null;
    
    CompressionResponseWrapper(HttpServletResponse resp) {
        super(resp);
    }
    
    //
    // Override HttpServletResponse methods to use our stream objects
    //
    
    public PrintWriter getWriter() throws IOException {
        if ( gzsos != null ) {
            throw new IllegalStateException();
        }
        if ( pw == null ) {
            gzsos = new GZIPServletOutputStream(getResponse().getOutputStream());
            // Use the response charset to create the OSWriter
            OutputStreamWriter osw
                    = new OutputStreamWriter(gzsos, getResponse().getCharacterEncoding());
            // Wrap the OSWriter in the PrintWriter
            pw = new PrintWriter(osw);
        }
        return pw;
    }
    
    public ServletOutputStream getOutputStream() throws IOException {
        if ( pw != null ) {
            throw new IllegalStateException();
        }
        if ( gzsos == null ) {
            gzsos = new GZIPServletOutputStream(getResponse().getOutputStream());
        }
        return gzsos;
    }
    
    public void setContentLength(int len) {
        // ignore this, because the real output will be compressed
    }
    
    //
    // Decorator methods (used by the Filter)
    //
    
    public GZIPOutputStream getGZIPOutputStream() {
        if ( this.gzsos == null ) return null;
        return this.gzsos.internalGZOS;
    }
}

class GZIPServletOutputStream extends ServletOutputStream {
    
    GZIPOutputStream internalGZOS;
    
    GZIPServletOutputStream(ServletOutputStream sos) throws IOException {
        this.internalGZOS = new GZIPOutputStream(sos);
    }
    
    public void write(int param) throws java.io.IOException {
        internalGZOS.write(param);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -