首页 > 编程语言 > 详细

SpringBoot 使用过滤器压缩请求

时间:2019-04-20 12:18:16      阅读:300      评论:0      收藏:0      [点我收藏+]
@WebFilter(urlPatterns = {"/sqlAnalysis/sqlModel/getAll"}, filterName = "authFilter")
public class GzipFilter implements Filter{
    @Override
    public void destroy() {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse resp = (HttpServletResponse) response;
        MyResponse mResp = new MyResponse(resp); // 包装响应对象 resp 并缓存响应数据;
        chain.doFilter(req, mResp);
        byte[] bytes = mResp.getBytes(); // 获取缓存的响应数据
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        GZIPOutputStream gzipOut = new GZIPOutputStream(bout); // 创建 GZIPOutputStream 对象
        gzipOut.write(bytes); // 将响应的数据写到 Gzip 压缩流中
        gzipOut.close(); // 将数据刷新到  bout 字节流数组
        byte[] bts = bout.toByteArray();
        resp.setHeader("Content-Encoding", "gzip"); // 设置响应头信息
        resp.getOutputStream().write(bts); // 将压缩数据响应给客户端
    }
    @Override
    public void init(FilterConfig arg0) throws ServletException {
        System.out.println("+++启动压缩。");
    }
}



然后启动类上添加@ServletComponentScan

SpringBoot 使用过滤器压缩请求

原文:https://www.cnblogs.com/liqingwang/p/10740070.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!