JavaEE 网页传输压缩方法

1、简单的处理方法

//在servlet中
    StringBuffer sb = new StringBuffer();
        for(int i=1;i<3000;i++){
            sb.append("nuist");
        }

        System.out.println("压缩前的数据大小:"+sb.toString().getBytes().length);
//      response.getWriter().write(sb.toString());

//      使用gzip进行压缩
        //创建一个临时缓存容器
        ByteArrayOutputStream buf = new ByteArrayOutputStream();
//      2)创建GZIPOutputStream
        GZIPOutputStream gzip = new GZIPOutputStream(buf);
        //3)进行压缩
        gzip.write(sb.toString().getBytes());
        //4)调用结束方法 把缓存内容刷新
        gzip.finish();
        //5)得到刷新的内容
        byte[] result = buf.toByteArray();

        System.out.println("压缩后的数据大小:"+result.toString().getBytes().length);
        //6)设置浏览器的请求头
        response.setHeader("content-encoding", "gzip");

        response.getOutputStream().write(result);

压缩前的数据大小:14995
压缩后的数据大小:11

可见压缩效果是很显著的

2、通过过滤器批量压缩

//servlet
        StringBuffer sb = new StringBuffer();
        for(int i=1;i<3000;i++){
            sb.append("北京");
        }


        response.getWriter().write(sb.toString());
//过滤器类
public class GZIPFilter implements Filter{

    @Override
    public void doFilter(ServletRequest request, ServletResponse response , FilterChain chain)
            throws IOException, ServletException {

        //1)过滤请求
        //由于response 直接将内容输出到浏览器 而没有缓存功能,所以重写包装一下getWriter()函数
        //定义一个char数组用来暂存数据
        MyHttpResponse myResponse = new MyHttpResponse((HttpServletResponse) response);

        chain.doFilter(request, myResponse);

        //3)响应请求
        //得到压缩前的内容
        char[] content = myResponse.getCharArray();
        System.out.println(new String(content).getBytes().length);
        //压缩
        ByteArrayOutputStream buf = new ByteArrayOutputStream();
        GZIPOutputStream gzip = new GZIPOutputStream(buf);
        gzip.write(new String(content).getBytes());

        gzip.finish();
        //输出

        byte[] result = buf.toByteArray();
        System.out.println(new String(result).getBytes().length);
        myResponse.setHeader("content-encoding", "gzip");

        myResponse.getOutputStream().write(result);
    }

}


class MyHttpResponse extends HttpServletResponseWrapper{

    private HttpServletResponse response;
    //用来暂存数据
    private CharArrayWriter charArray = new CharArrayWriter();

    public MyHttpResponse(HttpServletResponse response) {
        super(response);
        this.response = response;
    }

    public char[] getCharArray() {
        return charArray.toCharArray();
    }

    @Override
    public PrintWriter getWriter() throws IOException {

        return new PrintWriter(charArray);

    }

}

web.xml里面要自己配置一下过滤器
嗯嗯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaEE(Java Enterprise Edition)是Java平台的一部分,是用于企业级应用程序开发的Java标准。JavaEE包含一组API和技术,用于构建可扩展、可靠和安全的企业应用程序。JavaEE中的Web组件是基于Java Servlet和JavaServer Pages(JSP)技术的,可以用于构建动态Web应用程序。 以下是JavaEE网页设计的步骤: 1. 设计网站结构和页面布局。这是网站设计的第一步,需要确定网页的整体结构和布局,包括页面的主题、颜色、字体和排版等。 2. 使用HTML和CSS创建网页。使用HTML和CSS创建网页的基本框架和样式,包括标题、文本、图像、链接和导航等。 3. 使用Java Servlet和JSP技术,将网页变为动态Web应用程序。Java Servlet是运行在Web服务器上的Java类,可以接收和处理来自Web浏览器的HTTP请求。JSP是一种动态页面技术,可以将Java代码嵌入到HTML中,以生成动态内容。 4. 使用JavaEE提供的API和技术增强Web应用程序的功能。JavaEE提供了许多API和技术,可以增强Web应用程序的功能,如数据库连接池、事务管理、安全认证和授权等。 5. 测试和调试Web应用程序。测试和调试是Web应用程序开发的关键步骤,需要确保Web应用程序的稳定性、安全性和可靠性。 6. 部署Web应用程序。部署Web应用程序是将Web应用程序发布到生产环境中的过程,需要将Web应用程序打包成WAR文件,并将WAR文件上传到Web服务器上。 以上是JavaEE网页设计的基本步骤,需要掌握HTML、CSS、Java Servlet和JSP等技术,以及JavaEE提供的API和技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值