`
onehao
  • 浏览: 13402 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Servlet与JSP核心编程 ---- 4

阅读更多

chapter 5 客户请求的处理:http请求报头

 

5.1 请求报头的读取

在使用request.getHeader返回结果之前,一定要确保它不是null。

 

5.2 制作所有请求报头的表格

 

5.3 了解Http1.1请求报头

1.Accept 这个报头指定浏览器或其他客户程序能够处理的MIME类型。

request.getHeader("Accept")

 

2.Accept-Charset

浏览器可以使用的字符集

 

3.Accept-Encoding

客户端能够处理的编码类型

 

4.Accept-Language

标准语言代码的一种,比如en,en-us,da等

 

5.Authorization

 

6.connection

客户能否处理持续性的连接。

 

7.Content-Length

这个报头只适用于POST请求,用来给定POST数据的大小,以字节为单位。

 

8.Cookie

不要直接使用这个报头,而要使用request.getCookies

 

9.Host

 

10.If-Modified-Since

仅当页面在指定的日期之后发生更改的情况下,客户程序才希望获取该页面。

 

11.If-Unmodified-Since

 

12. Referer

一用web页面的URL

 

13.User-Agent

这个报头标识生成请求的浏览器或其他客户程序,根据这个报头,可以针对不同类型的浏览器返回不同的内容。

 

5.4 发送压缩web页面

gzip文本压缩方案可以极大地减少HTML页面的大小。

 

Implementing compression is straightforward since support for the gzip format is

built in to the Java programming language by classes in java.util.zip. The servlet

first checks the Accept-Encoding header to see if it contains an entry for gzip. If so,

it uses a PrintWriter wrapped around a GZIPOutputStream and specifies gzip

as the value of the Content-Encoding response header. If gzip is not supported, the

servlet uses the normal PrintWriter and omits the Content-Encoding header.

To make it easy to compare regular and compressed performance with the same

browser, we also added a feature whereby we can suppress compression by including

?disableGzip at the end of the URL

 

package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** Servlet with <B>long</B> output. Used to test
* the effect of the gzip compression.
*/
public class LongServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
// Change the definition of "out" depending on whether
// or not gzip is supported.
PrintWriter out;
if (GzipUtilities.isGzipSupported(request) &&
!GzipUtilities.isGzipDisabled(request)) {
out = GzipUtilities.getGzipWriter(response);
response.setHeader("Content-Encoding", "gzip");
} else {
out = response.getWriter();
}
// Once "out" has been assigned appropriately, the
// rest of the page has no dependencies on the type
// of writer being used.
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 = "Blah, blah, blah, blah, blah. " +
"Yadda, yadda, yadda, yadda.";
for(int i=0; i<10000; i++) {
out.println(line);
}
out.println("</BODY></HTML>");
out.close(); // Needed for gzip; optional otherwise.
}
}
 

 

package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.zip.*;
/** Three small static utilities to assist with gzip encoding.
* <UL>
* <LI>isGzipSupported: does the browser support gzip?
* <LI>isGzipDisabled: has the user passed in a flag
* saying that gzip encoding should be disabled for
* this request? (Useful so that you can measure
* results with and without gzip on the same browser).
* <LI>getGzipWriter: return a gzipping PrintWriter.
* </UL>
*/
public class GzipUtilities {
/** Does the client support gzip? */
public static boolean isGzipSupported
(HttpServletRequest request) {
String encodings = request.getHeader("Accept-Encoding");
return((encodings != null) &&
(encodings.indexOf("gzip") != -1));
}
/** Has user disabled gzip (e.g., for benchmarking)? */
public static boolean isGzipDisabled
(HttpServletRequest request) {
String flag = request.getParameter("disableGzip");
return((flag != null) && (!flag.equalsIgnoreCase("false")));
}
/** Return gzipping PrintWriter for response. */
public static PrintWriter getGzipWriter
(HttpServletResponse response) throws IOException {
return(new PrintWriter
(new GZIPOutputStream
(response.getOutputStream())));
}
}
 
分享到:
评论

相关推荐

    Servlet与JSP核心编程(第二版).pdf

    Servlet与JSP核心编程:综合介绍Servlet与JSP

    Servlet与JSP核心编程(第二版)

    《Servlet与JSP核心编程(第二版)》是一本针对Java Web开发的权威指南,主要聚焦于Servlet和JSP这两个核心技术。Servlet是Java平台上的服务器端组件,用于处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页...

    Servlet与JSP核心编程

    《Servlet与JSP核心编程(第2卷 第2版)》在第l卷的基础上,广泛涉及自定义标签库、过滤器、声明式安全、JSTL和Struts等主题,并沿袭深受读者喜爱的写作风格,通过完整、有效、资料丰富的程序来演绎目前最流行的技术和...

    Servlet与JSP核心编程(第2卷 第2版)

    《Servlet与JSP核心编程(第2卷 第2版)》这本书深入讲解了这两项技术,帮助开发者理解并掌握其核心概念、用法以及最佳实践。 1. **Servlet概述** - Servlet是Java平台上的一个接口,它定义了服务器端程序如何响应...

    Servlet与JSP核心编程第二版

    Servlet与JSP核心编程第二版 PDF文件 高清,内容通俗易懂.

    Servlet与JSP核心编程第二版源代码

    《Servlet与JSP核心编程第二版》这本书深入浅出地讲解了这两个技术,涵盖了从基础到高级的主题,包括但不限于: 1. **Servlet生命周期**:Servlet的创建、初始化、服务和销毁过程,以及如何通过配置`web.xml`文件或...

    servlet与jsp核心编程

    servlet与jsp核心编程,还是免费给大家下载,需要的可以下来看看

    Servlet与JSP核心编程第二版5

    ### Servlet与JSP核心编程第二版5:关键技术与实践解析 #### 一、Servlet概述与核心技术 ##### 1.1 Servlet简介 Servlet 是 Java 平台的一种服务器端技术,用于扩展应用程序的功能。它是一个轻量级的应用程序组件...

    Servlet与JSP核心编程带完整书签

    《Servlet与JSP核心编程》由浅入深,全面而深入地介绍了servlet和jsp技术。本书重点介绍核心技术,同时对相关的内容,如web服务器的配置、安装和应用,数据库的安装和配置等都做了详细明了的介绍。本书的例子简练...

    Servlet与JSP核心编程第二版(含书签)

    ### Servlet与JSP核心编程知识点概述 #### 一、Servlet基础概念 - **Servlet定义**:Servlet是一种Java程序,用于扩展服务器的功能。它提供了一种方法来创建动态Web页面,并可以处理客户端请求。 - **Servlet生命...

    javax.servlet.jsp-api-2.3.2-b01.jar.zip

    Servlet API是Java Web开发的核心组件,它定义了服务器端Java应用程序(Servlet)与Web服务器之间的接口规范。Servlet API提供了处理HTTP请求和响应的方法,允许开发人员创建能够接收和处理来自客户端(如浏览器)的...

    servlet 与jsp核心编程 第二版中文版 第3部分

    本书由Marty Hall,Larry Brown著 张学良译 清华大学出版社出版 原书有47M由于上传文件大小限制分为3部分,本人不是黑人,仅仅在最后一个部分才收取4分资源分

    Servlet与JSP核心编程(第二版 源码

    《Servlet与JSP核心编程》由浅入深,全面而深入地介绍了servlet和jsp技术。本书重点介绍核心技术,同时对相关的内容,如web服务器的配置、安装和应用,数据库的安装和配置等都做了详细明了的介绍。本书的例子简练...

    javax.servlet---jsp-api jar包

    4. **开发与部署**: 开发者通常会将`javax.servlet` 和 `jsp-api` 的jar包添加到项目的类路径中,以便编译和运行包含Servlet和JSP的Web应用。在部署到Tomcat、Jetty等Servlet容器时,这些库通常由容器自身提供,但在...

    《Servlet与JSP核心编程(第1卷 第2版)》

    综上所述,《Servlet与JSP核心编程(第1卷 第2版)》这本书很可能是深入探讨了Servlet与JSP的基础理论、核心技术及其实战应用的一本书籍。对于想要学习或深入理解这些技术的人来说,这本书将是非常有价值的资源。

    servlet与jsp核心编程*(第二版)卷二 源代码集合

    本书《Servlet与JSP核心编程(第二版)卷二》的源代码集合,为读者提供了丰富的实践素材,有助于深入理解这两种技术的内部工作原理。 Servlet是一种Java API,用于扩展服务器的功能,处理HTTP请求并生成响应。它...

    Servlet与JSP核心编程 第1卷 + 第2卷

    《Servlet与JSP核心编程》(第2版)叙述详尽,条理清晰。对于初学者来说是一本不可多得的入门书籍,经验丰富的Servelet和JSP开发人员也可以通过阅读《Servlet与JSP核心编程》(第2版)得到巩固和提高。

    美河图书提供.Servlet与JSP核心编程第二版_带目录

    ### Servlet与JSP核心编程第二版知识点概览 #### 一、Servlet基础知识 - **Servlet概念**:Servlet是一种运行在服务器端的小程序,主要用于处理客户端请求并生成动态Web页面或数据。Servlet是Java Web开发的基础...

Global site tag (gtag.js) - Google Analytics