I believe GZipFilter has a bug -- if the app server applies it twice to a single request, the response gets mangled since it is compressed twice. This can easily happen in a Struts application.
Try this open-source compression filter -- written by yours truly! It does not face this problem, so it may work correctly for you. It was also written to be much faster than GZipFilter and support more compression algorithms. I hope it helps.