`

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...

    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 请求报头详解

    HTTP头字段包括4类: general-header ; request-header ; response-header ; entity-header

    用java解析HTTP请求报头.doc

    用java解析HTTP请求报头

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

    2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 ...

    Python使用requests发送POST请求实例代码

    本文研究的主要是Python使用requests发送POST请求的相关内容,具体介绍如下。 一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行 请求报头 消息主体 HTTP协议规定post提交的...

    HTTP协议之消息报头

    详细介绍了HTTP协议之消息报头中各个属性。

    JSP期末考试试卷及参考答案

    5、在页面中通过声明标识声明的变量和方法的有效范围为(整个页面),他们将成为JSP页面被转换成Java类后类中的(属性)和(方法)。 6、通常应用(&lt;jsp:useBean&gt;)动作标识可以在JSP页面中创建一个Bean实例,并且通过属性的...

    http报头for Arduino

    http报头for Arduino生成工具

    Python小白学习爬虫常用请求报头

    请求行、请求头部、空行、请求数据 一个典型的HTTP请求 GET https://www.baidu.com/ HTTP/1.1 Host: www.baidu.com Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1...

    IP报头结构实验

    科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 ...

    Java语言基础下载

    第五章:数组 71 学习目标 71 数组的描述 72 创建数组 72 多维数组 78 拷贝数组 80 内容总结 83 独立实践 84 第六章:继承 86 学习目标: 86 单继承(single inheritance) 87 访问控制 89 方法重载(method ...

    HTTP 请求方法

    HTTP 请求方法 根据 HTTP 标准,HTTP 请求可以使用多种请求方法。...向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资

    urllib2学习笔记

    urllib2学习笔记,用于平时学习时的笔记使用: #返回读取网页全部内容,字符串 html = response.read() #返回访问的问页响应码 print response. getcode() #返回实际数据的URL print response.geturl() #返回访问...

    C++自己封装HTTP报头

    自己封装HTTP报头,发送服务器,接受返回信息!用于新手学习!

    为HttpClient添加默认请求报头的四种解决方案

    主要给大家介绍了关于为HttpClient添加默认请求报头的四种解决方案,文中通过示例代码介绍的非常详细,对大家学习或者使用HttpClient具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

Global site tag (gtag.js) - Google Analytics