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

📄 compressionresponsewrapper.java

📁 运用过滤器对请求和响应进行替换
💻 JAVA
字号:
package org.sunxin.ch16.filter;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class CompressionResponseWrapper extends HttpServletResponseWrapper
{

	private GZIPServletOutputStream gzipsos;
	private PrintWriter pw;
	
	public CompressionResponseWrapper(HttpServletResponse response) throws IOException 
	{
		super(response);
		
		//用响应输出流创建GZIPServletOutputStream对象
		gzipsos = new GZIPServletOutputStream(response.getOutputStream());
		////用GZIPServletOutputStream对象作为参数,构造PrintWriter对象
		pw = new PrintWriter(gzipsos);
	}
	
	/**
	 * 重写setContentLength()方法,以避免Content-Length实体报头所指出的长度
	 * 和压缩后的实体正文长度不匹配
	 */
	@Override
	public void setContentLength(int len){}

	@Override
	public ServletOutputStream getOutputStream() throws IOException
	{
		return gzipsos;
	}

	@Override
	public PrintWriter getWriter() throws IOException
	{
		return pw;
	}
	
	/**
	 * 过滤器调用这个方法来得到GZIPOutputStream对象,以便完成将压缩数据写入输出流的操作
	 */
	public GZIPOutputStream getGZIPOutputStream()
	{
		return gzipsos.getGZIPOutputStream();
	}
}

⌨️ 快捷键说明

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