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!

时间: 2024-10-25 12:45:12

Servlet/Jsp实现发送压缩Web页面 Gzip技术的相关文章

Servlet&amp;JSP学习笔记:Web应用程序基础知识

URL.URN和URI URL:Uniform Resource Locator URN:Uniform Resource Name URI:Uniform Resource Indenfier URL的主要目的,是以文字方式来说明因特网上的资源如何取得.一般而言,URL的主要格式为: <协议>:<特定协议部分> 协议(scheme)指定了以何种方式取得资源.常见的协议名有: ftp(文件传输协议,File Transfer Protocol) http(超文本传输协议,Hyper

servlet/jsp学习04 读取web.xml参数

1初始化参数init-param init-param是配置在web.xml的<servlet>标签里的,也就是说,是归该servlet单独所有的. 实例 <servlet> <servlet-name>ContextParamServlet</servlet-name> <servlet-class>com.servlet.ContextParamServlet</servlet-class> </servlet> &l

Servlet+JSP来构建Java web项目

http://jovew.cn.b2b168.com/shop/supply/47997684.htmlhttp://jovew.cn.b2b168.com/shop/supply/47997681.htmlhttp://jovew.cn.b2b168.com/shop/supply/47997679.htmlhttp://jovew.cn.b2b168.com/shop/supply/47997666.htmlhttp://jovew.cn.b2b168.com/shop/supply/479

Java Web基础(HTML、Servlet/JSP)

要成为牛逼的JavaWeb程序员, Java Web的基础非常重要,现在有各种成熟的设计框架例如JQuery.Spring.Struts.Mybatis,将Java Web基础的复杂且通用的逻辑进行封装,减少了程序员的代码量,提高了编码效率,但是这些框架非常不利于我们了解Java Web底层如何运作,甚至不知道HTML(HyperText MarkupLanguage).HTTP(HyperText Transfer Protocol).URL(Uniform Resource Locator)

Servlet&amp;JSP学习笔记:什么是Web容器

什么是Web容器 Web容器(Container)是Servlet/JSP唯一认得的 HTTP 服务器 在具体层面,容器说穿了就是一个用 Java 写的程序,运行于 JVM 之上,不同类型的容器会负责不同的工作,若以 Servlet/JSP 运行的 Web 容器(Web Container)来说,也是一个 Java 写的程序. HTTP 那些文字性的通信协议,如何变成 Servlet/JSP中可用的 Java 对象,其实就是容器做的剖析与转换. 在抽象层面,可以将Web容器视为运行 Servle

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的Web服务器(也叫www服务器)上获取网页文档的内容. 2. Web浏览器与Web服务器分别代表着TCP网络程序的客户机和服务器. 3. 无论网站规模的大小,最起码的工作就是要在用做Web服务器的计算机上安装某种Web服务器软件.只要在一台计算机上安装了Web服务器软件,从功能上讲,这台计算机就可以成为

servlet+jsp 实现一个简单的web项目

开发环境: MyEclipse 10.7 Tomcat   7 MySql  5.5 开发过程 1. 建立一个 Web Project,名字为 MyProject,如下图,点击finish,就创建好了. 2. 修改项目编码为Utf-8,在src下创建类,首先 看一下项目结构 2.1  创建实体类类 User package entity; public class User { private String id; private String name; public String getId

Nginx开启Gzip压缩提高页面加载速度

本文转自http://www.veryhuo.com/a/view/51706.html,如有侵权,请及时联系转载人删除! 在实际运维中,为了提高web页面的访问加载速度,一般会把静态资源(比如js.css.img等)在服务器进行压缩再传输到客户浏览器,主要配置步骤如下: 环境:Centos 1.Vim打开Nginx配置文件 vim /etc/nginx/nginx.conf 2.找到如下一段,进行修改 gzip on; // 开启Gzipgzip_min_length 1k; // 不压缩临界

servlet+jsp+java实现Web应用

servlet+jsp+java实现Web应用 环境: 1,eclipse 2,tomcat3,eclipse tomcat 插件 开发过程: 1,建立一个Dynamic Web Project 2,创建一个欢迎页面 页面可以是jsp/html,我们选择一个jsp页面(放在WebContent内) <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding=