天天看点

JavaWeb-过滤器Filter学习(五)全站压缩简单演示:全站压缩实例:完整项目源码:

全站压缩,最大的好久就是帮客户端节省流量。

数据压缩,我们需要用到二个Java类,也就是java.util.zip 中的

类 GZIPOutputStream

此类为使用 GZIP 文件格式写入压缩数据实现流过滤器。

java.io

类 ByteArrayOutputStream

此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

我们利用GZIPOutputStream(OutputStream out) 使用默认缓冲区大小创建新的输出流。

再用write(byte[] b)将 b.length 个字节写入此输出流。

也就是把数据压缩后写入ByteArrayOutputStream。

然后通过内存流输出到客户端。

也就是在一个servlet这样写:

JavaWeb-过滤器Filter学习(五)全站压缩简单演示:全站压缩实例:完整项目源码:

这样可以实现压缩,但是每次我们有一个servlet就要写一大长串的代码,很臃肿,也很麻烦,毕竟代码是一样的。而且还无法压缩jsp和html字符文件。

这个时候,我们就需要用到过滤器了。只要拦截所有的servlet和jsp/html就ok。只要写一次!很方便。

用过滤器来做全站压缩,无论你怎么增加servlet,jsp,html,还是照原来的写,不用你增加代码,我们只要在过滤器中对你的数据进行压缩发送到前台去就可以了!!!

注意,过滤器中用了装饰模式。

<a href="https://github.com/chenhaoxiang/Java/tree/master/myGzipWeb">https://github.com/chenhaoxiang/Java/tree/master/myGzipWeb</a>

myGzipWeb.zip

转载请附上原文博客链接:

<a href="http://blog.csdn.net/qq_26525215">http://blog.csdn.net/qq_26525215</a>