句号压缩过滤器

句号压缩过滤器

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

1.压缩采样点的简单演示

public class ServletDemo extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
		
		//找一个内存缓冲字节流
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		//把数据压缩到缓冲字节流流中
		GZIPOutputStream gout = new GZIPOutputStream(baos);
		//取出数据:压缩后的
		byte b[] = data.getBytes();//原始字节
		System.out.println("原有数据大小:"+b.length);
		gout.write(b);
		gout.close();//保证全部的数据都进入内存缓存流
		
		//取出压缩后的数据
		b = baos.toByteArray();
		System.out.println("压缩后的数据大小:"+b.length);
		//输出前一定要告知client压缩方式
		response.setHeader("Content-Encoding", "gzip");
		response.setContentLength(b.length);//告知client正文的大小
		//用server的响应对象输出
		ServletOutputStream out = response.getOutputStream();
		out.write(b);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}

2.全站压缩过滤器的一个简单演示样例

//全站压缩过滤器
public class GzipFilter implements Filter {

	public void destroy() {

	}

	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)req;
		HttpServletResponse response = (HttpServletResponse)resp;
		GzipHttpServletResponse gresponse = new GzipHttpServletResponse(response);
		chain.doFilter(request, gresponse);//放行
		//压缩代码写在此处
		//找一个内存缓冲字节流
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		//把数据压缩到缓冲字节流流中
		GZIPOutputStream gout = new GZIPOutputStream(baos);
		//取出数据:压缩后的
		byte b[] = gresponse.getOldBytes();//原始字节
		System.out.println("原有数据大小:"+b.length);
		gout.write(b);
		gout.close();//保证全部的数据都进入内存缓存流
		
		//取出压缩后的数据
		b = baos.toByteArray();
		System.out.println("压缩后的数据大小:"+b.length);
		//输出前一定要告知client压缩方式
		response.setHeader("Content-Encoding", "gzip");
		response.setContentLength(b.length);//告知client正文的大小
		//用server的响应对象输出
		ServletOutputStream out = response.getOutputStream();
		out.write(b);
	}

	public void init(FilterConfig filterConfig) throws ServletException {

	}

}
class GzipHttpServletResponse extends HttpServletResponseWrapper{
	private ByteArrayOutputStream baos = new ByteArrayOutputStream();
	private PrintWriter pw;
	public GzipHttpServletResponse(HttpServletResponse response){
		super(response);
	}
	//把原始数据封装到一个缓冲流中
	@Override
	public ServletOutputStream getOutputStream() throws IOException {
		return new MyServletOutputStream(baos);
	}
	
	//字符流:把原始数据封装到一个缓冲流中
	@Override
	public PrintWriter getWriter() throws IOException {
		pw = new PrintWriter(new OutputStreamWriter(baos, super.getCharacterEncoding()));//字符流转成字节流编码会丢失
		return pw;
	}
	//返回baos中的缓存数据:原始
	public byte[] getOldBytes(){
		try {
			if(pw!=null){
				pw.close();
			}
			baos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return baos.toByteArray();
	}
	
}
class MyServletOutputStream extends ServletOutputStream{
	private ByteArrayOutputStream baos;
	public MyServletOutputStream(ByteArrayOutputStream baos){
		this.baos = baos;
	}
	@Override
	public void write(int b) throws IOException {
		baos.write(b);
	}
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117145.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux移动文件到另一个目录命令_Linux怎么解压zip到指定目录

    linux移动文件到另一个目录命令_Linux怎么解压zip到指定目录把xxx.jar移动到根目录里的lib中:mvxxx.jar/lib移动所有:到libmv*/lib把所有文件移动到上一级目录:mv*../

    2022年9月1日
    9
  • 大一下学期微积分期末预习(3):定积分的应用-求旋转体的体积

    大一下学期微积分期末预习(3):定积分的应用-求旋转体的体积下面这个是柱壳法,不是注,别问,问就是字写错了。

    2022年6月7日
    30
  • vmware虚拟机安装windows10_虚拟机15安装教程win7

    vmware虚拟机安装windows10_虚拟机15安装教程win71.去下载win7原装镜像,推荐去官方网站下载:https://msdn.itellyou.cn/2.这里注意一点,防止下载的镜像可能出现差错,我们使用iHasher检验一下完整性,确定SHA1值跟我们下载的那个SHA1值一样就行3.打开vmware虚拟机,新建虚拟机4.这里我们选择自定义5.兼容性自己选择,可以向下兼容,点击下一步6.选择win7镜像,这里我们选稍后安装操作系统(…

    2022年9月28日
    4
  • sdio接口是什么_如何理解api接口

    sdio接口是什么_如何理解api接口运用SD卡第一步,认识SDIO接口做毕业设计需要用到大量的音频文件,一般的存储器满足不了存储要求,故选择SD卡作为存储器件。在这里记录一下自己的学习经历,学习一个新的IC,无非是要么根据时序图写出Read和Write函数,要么是根据通信总线和IC相关操作指令去完成Read和Write函数。只有能与对应IC“说话”,我们才能去开发它更多地可能性。这里以原子探索者为例,为大家介绍一下SD卡相关知识。…

    2022年10月3日
    3
  • python interpolate.interp1d_将MATLAB的interp1转换为Python interp1d

    python interpolate.interp1d_将MATLAB的interp1转换为Python interp1d我正在将MATLAB代码转换为Python代码。在代码使用MATLAB中的函数interp1。我发现scipy函数interp1d应该是我想要的,但我不确定。你能告诉我我实现的代码是否正确吗?我的Python版本是3.4.1,MATLAB版本是R2013a,但是代码已经在2010年左右实现了]。在MATLAB:S_T=[0.0,2.181716948,4.363766232,6.5464…

    2022年4月30日
    63
  • 大厂工作经验重要吗_大厂能学到技术吗

    大厂工作经验重要吗_大厂能学到技术吗很多小伙伴问我进大厂到底需要怎样的技术能力,经过几天的思考和总结,终于梳理出一份相对比较完整的技能清单,太顶了,建议收藏!!

    2022年8月13日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号