当前位置: 首页 > news >正文

Servlet/Jsp实现发送压缩Web页面 Gzip技术

(1)什么话都不说,意思很简单 就是实现页面的压缩后发送!据说对于篇幅比较长的页面可以提高几百倍哦!

(2)注意事项:并不是所有的游览器都支持压缩页面的发送与接收,所以要用代码来检验,如果可以则发送不可以

则按照正常的发送;

(即是:在HTTP包头中检查 Accept-Encoding报头,检查他手否包含有关gzip的项,如果支持,它使用PrintWriter封

装GZIPOutputStream,不支持的话则正常发送页面,同时加上了一个功能 禁止页面压缩!)

(3)显示页面的servlet

package com.lc.ch04Gzip;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class LongServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");

		PrintWriter out;
		if (GzipUtilities.isGzipSupported(request)
				&& !GzipUtilities.isGzipDisabled(request)) {
			out = GzipUtilities.getGzipWriter(response);
			response.setHeader("Content-Encoding", "gzip");
		} else {
			out = response.getWriter();
		}

		String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
				+ "Transitional//EN\">\n";
		String title = "Long Page";
		out.println(docType + "<HTML>\n" + "<HEAD><TITLE>" + title
				+ "</TITLE></HEAD>\n" + "<BODY BGCOLOR=\"#FDF5E6\">\n"
				+ "<H1 ALIGN=\"CENTER\">" + title + "</H1>\n");
		String line = "Bfsdfdsfdsflah, blfsdfdsfah, blasfdsdfh, blsdfdsfah, bldfsdfsdfah. "
				+ "Yaddsfdsdfa, ysfdsdfadda, yadsdfsdfdsda, yasdfsdfdsfdda.";
		for (int i = 0; i < 10000; i++) {
			out.println(line);
		}
		out.println("</BODY></HTML>");
		out.close(); // Needed for gzip; optional otherwise.
	}
}


(4)处理压缩的类

package com.lc.ch04Gzip;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class GzipUtilities {
  
  
  public static boolean isGzipSupported
      (HttpServletRequest request) {
    String encodings = request.getHeader("Accept-Encoding");
    return((encodings != null) &&
           (encodings.indexOf("gzip") != -1));
  }

  
  public static boolean isGzipDisabled
      (HttpServletRequest request) {
    String flag = request.getParameter("disableGzip");
    return((flag != null) && (!flag.equalsIgnoreCase("false")));
  }

  
  public static PrintWriter getGzipWriter
      (HttpServletResponse response) throws IOException {
    return(new PrintWriter
            (new GZIPOutputStream
              (response.getOutputStream())));
  }
}
(5)演示效果:(效果很好 不过没有对比  不过应该可以   一般的图片 不需要压缩了!)




ok!

相关文章:

  • Java内存区域与内存溢出
  • 如何删除鼠标右键菜单里的打开按钮
  • Struts2的s:date标签使用详解[转]
  • JSP隐含对象(1)
  • 二级指针的思考
  • JSP隐含对象 request(2)
  • JSP实现网页计算器
  • MySQL汇总数据
  • 如何配置Tomcat的热启动
  • vncserver
  • 项目路径配置[pageContext.request.contextPath]和c标签
  • JSP隐含对象response实现文件下载的两种方式
  • JSP动态生成验证码
  • 报表性能优化方案之多种报表服务器内存修改方法
  • JSP用过滤器解决request中文乱码问题
  • 2019年如何成为全栈工程师?
  • axios 和 cookie 的那些事
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Invalidate和postInvalidate的区别
  • js算法-归并排序(merge_sort)
  • Mac转Windows的拯救指南
  • Otto开发初探——微服务依赖管理新利器
  • Phpstorm怎样批量删除空行?
  • Redux系列x:源码分析
  • Vue 2.3、2.4 知识点小结
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 技术:超级实用的电脑小技巧
  • 经典排序算法及其 Java 实现
  • 理解在java “”i=i++;”所发生的事情
  • 前端_面试
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 项目管理碎碎念系列之一:干系人管理
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (11)MATLAB PCA+SVM 人脸识别
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (七)Java对象在Hibernate持久化层的状态
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net 应用中使用dot trace进行性能诊断
  • .Net中ListT 泛型转成DataTable、DataSet
  • .NET中的十进制浮点类型,徐汇区网站设计
  • /*在DataTable中更新、删除数据*/
  • @EnableAsync和@Async开始异步任务支持
  • @EnableConfigurationProperties注解使用
  • @EnableWebMvc介绍和使用详细demo
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [Android]一个简单使用Handler做Timer的例子
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [C#基础]说说lock到底锁谁?
  • [C++]打开新世界的大门之C++入门
  • [GXYCTF2019]BabyUpload1 -- 题目分析与详解