`

servlet和jsp核心编程(第2版)第五章客户请求的处理:HTTP请求报头学习笔记

阅读更多
第五章客户请求的处理:HTTP请求报头
核心方法
1.在使用request.getHeader返回结果之前,一定要确保它不是null。
2.对于篇幅较长的文本页面,Gzip压缩可以极大第降低下载时间。
学习笔记
、请求报头的读取:1.调用HttpServletRequest的getHeader方法。在Http1.1中,只有Host是必需的。因而,在使用请求报头之前一定要检查是否为null。
请求的格式为:
<request line>
<header line>
<blank line>
[<request body>]
具体例子可参见 http://wenku.baidu.com/view/31d9151a6bd97f192279e9d7.html
每种请求报头可见http://www.iteye.com/topic/563082
2.报头名称对大小写不敏感,尽管getHeader是读取输入报头的通用方式,但由于几种报头的应用太过普遍,故而HttpServletRequest为他们提供了专门的访问方法。
比如:getCookies,getAuthType,getRemoteUser;getContentLength,getContentType,getDateHeader,getIntHeader,getHeaders(返回一个Enumeration),getMethod,getRequestURI,getQueryString,getProtocol
、枚举报头:
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements){
	String headerName = (String)headerNames.nextElement();
	out.println(headerName+":"+request.getHeader(headerName));
}

、了解HTTP1.1 请求报头
、发送压缩的web页面。
package coreservlets.beans;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;
import java.io.IOException;
public class GzipUtilities {
	public static boolean isGzipSupport(HttpServletRequest request){
		boolean flag = false;
		String acceptEncoding = request.getHeader("Accept-Encoding");
		if(acceptEncoding!=null&&acceptEncoding.indexOf("gzip")!=-1){
			flag = true;
		}
		return flag;
	}
	public static boolean isGzipDisabled(HttpServletRequest request){
		boolean flag = false;
		String param = request.getParameter("gzip");
		if(param!=null&&!param.equalsIgnoreCase("false")){
			flag = true;
		}
		return flag;
	}
	public static PrintWriter getGzipWriter(HttpServletResponse response) throws IOException{
		return new PrintWriter(new GZIPOutputStream(response.getOutputStream()));
	}
}

、区分不同的浏览器类型。
User-Agent 报头标示发出请求的具体浏览器。注意:1.仅在必要时使用User-Agent,2.检查是否为null,3.区分Netscape和IE,要检查“MSIE”,而非“Mozilla”。
String header = request.getHeader("User-Agent");
		String title;
		if(header!=null&&header.indexOf("MSIE")!=-1){
			title = "This is IE ;";
		}else{
			title = "This is Netscape;";
		}

、依据客户的到达方式定制页面
通过Referer报头,我们可以根据用户如何到达某个页面,对页面进行定制。这个Referer报头指出,用户单击连接到达当前页面时

所处的页面的位置,如果用户直接输入页面的地址,就不会发送这个Referer

String referer = request.getHeader("Referer");
if(referer==null){
	doSomething();
}
if(referer.index("JRun")!=-1){
	doSomething();
}else if(referer.index("Resin")!=-1){
	doSomething();
}else{
	doSomething();
}

、标准CGI变量的访问。CGI,传统公共网关接口(Common Gateway Interface),在物理上是一段程序,运行在服务器上,

提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子:现在的个人主页上大部分都有一个留言本。

留言本的工作是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客

户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本

例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览

器里将看到“留言结束”的字样。整个过程结束。
尽管将不同的数据来源区分对待会更有意义些,但我们得到每个CGI变量在servlet中的等价物更为有用,
分享到:
评论

相关推荐

    Servlet与JSP核心编程第2版

    第5章 客户请求的处理:http请求报头 5.1 请求报头的读取 5.2 制作所有请求报头的表格 5.3 了解http1.1请求报头 5. 4 发送压缩web页面 5.5 区分不同的浏览器类型 5.6 依据客户的到达方式定制页面 5.7 ...

    Servlet与 JSP 指南,PPT教学课件part2(共3个)

    1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...

    Servlet与 JSP 指南,PPT教学课件part1(共3个)

    1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...

    Servlet与 JSP 指南,PPT教学课件part3(共3个)

    1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...

    HTTP 请求报头详解

    HTTP 请求报头是 HTTP 协议中的一种重要机制,它允许客户端和服务器之间进行信息交换。报头字段可以分为四类:general-header、request-header、response-header 和 entity-header。 首先,general-header 字段是 ...

    J2EE Web程序开发定向班V1.0 Java就业班V2.0 (完整版)

    第18章:Servlet与JSP核心技术课程--18、Servlet和JSP的集成MVC模式-MVC模式透析(2).rmvb 第18章:Servlet与JSP核心技术课程--18、Servlet和JSP的集成MVC模式-深入分析MVC架构模式.rmvb 第19章:Servlet与JSP核心...

    深入Java Servlet网络编程

    第5章 Java Servlet中的网络编程 5. 1 Java套接字网络编程 5. 1. 1 InetAddress类 5. 1. 2 Socket类 5. 1. 3 给手机发送网上短信息 5. 2 Java网络编程中的高层类 5. 2. 1 URL类 5. 2. 2 URLConnection类 第6...

    HTTP学习笔记

    2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。 3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4. 无连接:无连接的含义是...

    用java解析HTTP请求报头.doc

    在本文中,我们将学习如何使用 Java 语言解析 HTTP 请求报头。HTTP 请求报头是指客户端向服务端发送请求时所携带的信息,它包含了请求的方法、协议版本、请求 URL、主机信息、代理信息等。 为了解析 HTTP 请求报头...

    HTTP协议详解 学习servlet的必备资料

    1. **客户/服务器模式**:HTTP协议支持客户端发起请求,服务器响应的服务模式。 2. **简单快速**:客户端只需要发送请求方法和路径,常见的请求方法有GET、HEAD和POST,简单的协议设计使得HTTP服务器的实现较为轻量...

    J2EE学习资料(EJB、Servle、Jsp)

    这些PPT文件构成了一个完整的J2EE学习资源库,涵盖了从基础的Servlet和JSP编程,到高级的EJB和JPA使用,再到特定的Cookie管理。通过深入学习和实践这些内容,开发者可以建立起坚实的企业级Java应用开发基础。

    delphi操作IdHTTP报头读写

    在Delphi编程环境中, Indy(Internet Direct)库是一个强大的网络通信组件集,其中IdHTTP组件是用于HTTP协议交互的核心部分。本篇文章将深入探讨如何在Delphi中利用IdHTTP组件进行HTTP请求的报头(Header)读写操作...

    Servlet基础.ppt

    - `service()`方法是Servlet接口中的核心方法,负责接收并处理请求。根据HTTP请求类型(GET、POST等),它会调用相应的`doGet()`或`doPost()`方法。 2. **HttpServlet方法**: - `doGet()`和`doPost()`方法是`...

    Servlet服务器编程

    本章主要围绕Servlet进行深入探讨,包括Servlet的基础知识、编程接口以及如何在Tomcat服务器上进行配置和部署。 首先,Servlet是Java平台上的一个核心组件,它扩展了Web服务器的功能,允许开发者用Java代码来处理...

    HTTP协议之消息报头

    HTTP消息由请求消息和响应消息组成,每种消息都包括开始行(请求消息中的请求行或响应消息中的状态行)、消息报头、空行(仅含CRLF)和消息正文等部分。本篇文章将深入探讨HTTP消息报头中的各种属性及其功能。 ####...

    C++自己封装HTTP报头

    9. **Status Code**:在响应报头中,3位数字表示请求处理的结果,如200表示成功,404表示未找到资源,500表示服务器内部错误。 在C++中封装HTTP报头,你需要创建一个类来代表HTTP请求或响应,包含上述字段,并提供...

    servlet d的使用用必要看看那

    Servlet是Java平台上用于开发Web应用程序的核心技术之一,它是一个运行在服务器端的Java类,用于接收HTTP请求并生成响应。Servlet技术替代了早期的CGI技术,提供了更高效、更灵活的服务器端编程模型。本篇文章将深入...

    Servlet基础

    Servlet是Java Web开发中用于处理HTTP请求的核心组件,它提供了对HTTP协议的抽象,并且让开发者可以编写代码来响应来自Web客户端(如浏览器)的请求。Servlet技术是Java EE平台的一部分,广泛应用于构建动态Web应用...

    3+Servlet基础

    理解Servlet接口的使用,正确配置`web.xml`,掌握HTTP报头的使用,以及如何在Servlet中生成和处理响应,这些都是学习Servlet基础的关键点。通过实践和探索,开发者可以熟练运用Servlet构建高效、动态的Web应用程序。

    TCP实现http请求

    服务器处理完客户的请求,并收到客户的应答后,即断开连接。 2. 媒体独立:HTTP是媒体独立的,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。 3. 无状态:HTTP协议是无状态协议,无...

Global site tag (gtag.js) - Google Analytics