AppFuse Webapp过滤器:GZIPFilter与输出流压缩
41 浏览量
更新于2024-08-29
收藏 138KB PDF 举报
在AppFuse框架的web应用部分,特别关注的是org.appfuse.webapp.filter包下的GZIPFilter。这个过滤器是基于Spring框架的OncePerRequestFilter类实现的,它的主要作用是通过gzip算法对HTTP响应进行压缩,从而提高网络传输效率和减少带宽消耗。
GZIPFilter的核心逻辑在于doFilterInternal方法,它首先检查请求的一些特定条件来决定是否启用gzip压缩。具体来说,它会:
1. 检查HttpServletRequest中的TableTagParameters.PARAMETER_EXPORTING属性值,如果该值非空且表示正在使用displayTag以Excel、XML或PDF格式导出数据,由于这些格式通常已经包含了压缩,GZIPFilter会跳过压缩过程,返回false。
2. 检查HTTP头中的"accept-encoding"属性,如果其中包含"gzip"字符串,说明客户端支持gzip编码,GZIPFilter将启用压缩,否则不会压缩。
3. 如果请求来自HTTPUnit,这是一种用于自动化Web页面测试的工具,GZIPFilter会识别到并避免压缩,因为测试环境不需要压缩响应。
doFilterInternal方法根据上述判断,选择以下操作:
- 如果需要压缩,它会创建一个GZIPResponseWrapper对象,将原始的HttpServletResponse包装起来,然后调用FilterChain继续处理请求,将压缩后的响应传递给客户端。最后,GZIPResponseWrapper调用finishResponse()方法完成响应的发送。
- 如果不需要压缩,直接通过FilterChain处理请求,无需额外的包装。
GZIPResponseWrapper继承自HttpServletResponseWrapper,它内部封装了GZIPResponseStream,后者是实际进行gzip压缩的实现类。通过这种方式,GZIPFilter能够灵活地控制压缩行为,只在必要时对响应进行压缩,从而优化了应用的性能和用户体验。
总结起来,GZIPFilter是AppFuse框架中一个重要的性能优化组件,通过智能判断和压缩策略,确保在满足条件时提供高效的响应传输。这对于处理大量数据或者对速度有较高要求的应用场景尤其有价值。
2019-10-13 上传
点击了解资源详情
点击了解资源详情
183 浏览量
188 浏览量
2008-09-19 上传
2009-02-03 上传
点击了解资源详情
weixin_38750406
- 粉丝: 6
- 资源: 894
最新资源
- Java极富客户端开发书籍 用java做最酷的效果
- ABAQUS常见问题解答
- maven指令的使用方法
- S3C2410完全开发流程
- 网络经典命令,可用于基本的操作
- 资料\基于J2EE的客运信息管理系统数据持久层的JDBC解决方案.pdf
- 搜索引擎优化魔法书.pdf
- django构建web2.0网站实例(英文)
- 单片机学习板--mcu_bus光盘\说明书
- 基于J2EE_MVC的就业管理信息系统的研究.pdf
- USB驱动开发教程(比较好的介绍了USB驱动机理)
- 在windows下如何安装LINUX虚拟机
- 《苹果脚本跟我学》苹果脚本跟我学,要学习苹果的脚本的同志们可以借鉴一下,很不错的,言简意赅,怎么老是标题写得详细些,这个笨蛋说什么呢?
- 路由器知识全集.pdf
- 用wdm开发USB驱动.pdf
- Struts2 轻松入门