Import Java. io. bytearrayoutputstream; import Java. io. ioexception; import Java. io. outputstreamwriter; import Java. io. printwriter; import java.util.zip. gzipoutputstream; import javax. servlet. filter; import javax. servlet. filterchain; import javax. servlet. filterconfig; import javax. servlet. servletexception; import javax. servlet. servletoutputstream; import javax. servlet. servletrequest; import javax. servlet. servlet Response; import javax. servlet. HTTP. httpservletrequest; import javax. servlet. HTTP. httpservletresponse; import javax. servlet. HTTP. optional; public class gzipfilter implements filter {public void dofilter (servletrequest req, servletresponse res, filterchain chain) throws ioexception, servletexception {httpservletrequest request = (httpservletrequest) req; Response response = (Httpservletresponse) RES; bytearrayoutputstream bout = new bytearrayoutputstream (); myresponse = new myresponse (response); chain. dofilter (request, myresponse); byte data [] = myresponse. getdata (); system. out. println ("original size:" + data. length); byte [] gzip = gzip (data); response. setheader ("content-encoding", "gzip"); response. setheader ("Content-Length", Gzip. length + ""); response. getoutputstream (). write (gzip);} p Rivate byte [] gzip (byte [] data) throws ioexception {bytearrayoutputstream bout = new bytearrayoutputstream (); gzipoutputstream gout = new gzipoutputstream (bout); gout. write (data); gout. close (); return bout. tobytearray ();} class myresponse extends httpservletresponsewrapper {private httpservletresponse response; private bytearrayoutputstream bout = new bytearrayoutputstream (); Private printwriter PW; Public Myres Ponse (httpservletresponse response) {super (response); this. response = Response ;}@ overridepublic servletoutputstream getoutputstream () throws ioexception {return New myservletoutputstream (bout);} public byte [] getdata () {If (PW! = NULL) {PW. close ();} return bout. tobytearray () ;}@ overridepublic printwriter getwriter () throws ioexception {PW = new printwriter (New outputstreamwriter (bout, response. getcharacterencoding (); Return PW ;}} class myservletoutputstream extends servletoutputstream {private bytearrayoutputstream bout; Public myservletoutputstream (bytearrayoutputstream bout) {This. bout = bout;} @ overridepublic void write (int B) throws ioexception {// todo auto-generated method stubbout. write (B) ;}} public void Init (filterconfig) throws servletexception {} public void destroy (){}}