- 浏览: 89080 次
文章分类
最新评论
第五章客户请求的处理: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
二、枚举报头:
三、了解HTTP1.1 请求报头
四、发送压缩的web页面。
五、区分不同的浏览器类型。
User-Agent 报头标示发出请求的具体浏览器。注意:1.仅在必要时使用User-Agent,2.检查是否为null,3.区分Netscape和IE,要检查“MSIE”,而非“Mozilla”。
六、依据客户的到达方式定制页面
通过Referer报头,我们可以根据用户如何到达某个页面,对页面进行定制。这个Referer报头指出,用户单击连接到达当前页面时
所处的页面的位置,如果用户直接输入页面的地址,就不会发送这个Referer
七、标准CGI变量的访问。CGI,传统公共网关接口(Common Gateway Interface),在物理上是一段程序,运行在服务器上,
提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子:现在的个人主页上大部分都有一个留言本。
留言本的工作是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客
户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本
例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览
器里将看到“留言结束”的字样。整个过程结束。
尽管将不同的数据来源区分对待会更有意义些,但我们得到每个CGI变量在servlet中的等价物更为有用,
核心方法:
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版)第十六章 简化对Java代码的访问:jsp2.0表达式语言学习笔记
2012-08-23 21:49 768第十六章:简化对Java代 ... -
servlet和jsp核心编程(第2版)第十五章servlet和JSP的集成,模型-视图-控制器构架
2012-08-23 14:59 778第十五章:servlet和JSP的集成,模型-视图-控制器构架 ... -
servlet和jsp核心编程(第2版)第十四章 JavaBean组件在JSP文档中的应用 学习笔记
2012-08-21 11:55 733第十四章 JavaBean组件在JSP文档中的应用 一、bea ... -
servlet和jsp核心编程(第2版)第十三章 在JSP页面中包含文件和applet学习笔记
2012-08-20 15:53 888第十三章 在JSP页面中包 ... -
servlet和jsp核心编程(第2版)第十二章page指令学习笔记
2012-08-19 17:00 799第十二章 控制所生成的servlet的结构:JSP page指 ... -
servlet和jsp核心编程(第2版)第十一章jsp脚本元素的调用学习笔记
2012-08-18 21:09 847第十一章 用JSP脚本元素 ... -
servlet和jsp核心编程(第2版)第十章jsp技术概述学习笔记
2012-08-18 10:37 718第十章jsp技术概述 学习笔记: 一servlet和jsp的区 ... -
servlet和jsp核心编程(第2版)第九章会话跟踪学习笔记
2012-08-17 17:30 927第九章 会话跟踪 核心 ... -
servlet和jsp核心编程(第2版)第八章cookie管理学习笔记
2012-08-08 12:27 876第八章 cookie管理 核心方法: 1.在创建cookie对 ... -
servlet和jsp核心编程(第2版)第七章服务器响应的生成:HTTP响应报头学习笔记
2012-08-06 17:45 773第七章:服务器响应的 ... -
servlet和jsp核心编程(第2版)第六章服务器响应的生成:HTTP状态代码学习笔记
2012-08-05 10:52 775第六章:服务器响应的生成:HTTP状态代码 核心方法: 1.在 ... -
servlet和jsp核心编程(第2版)第四章客户请求的处理,表单数据学习笔记
2012-07-31 16:05 1260第四章学习笔记 客户请 ... -
servlet和jsp核心编程(第2版)第三章servlet基础学习笔记
2012-07-29 10:43 740第三章:servlet基础 核心方法: 1.使用HTML验证器 ...
相关推荐
第5章 客户请求的处理:http请求报头 5.1 请求报头的读取 5.2 制作所有请求报头的表格 5.3 了解http1.1请求报头 5. 4 发送压缩web页面 5.5 区分不同的浏览器类型 5.6 依据客户的到达方式定制页面 5.7 ...
1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...
1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...
1、servlet与JSP技术概述 2、servlet基础 3、客户请求的处理:表单数据 4、客户请求的处理:HTTP请求报头 5、服务器响应的生成:HTTP状态代码 6、服务器响应的生成: HTTP响应报头 7、cookie...
HTTP 请求报头是 HTTP 协议中的一种重要机制,它允许客户端和服务器之间进行信息交换。报头字段可以分为四类:general-header、request-header、response-header 和 entity-header。 首先,general-header 字段是 ...
第18章:Servlet与JSP核心技术课程--18、Servlet和JSP的集成MVC模式-MVC模式透析(2).rmvb 第18章:Servlet与JSP核心技术课程--18、Servlet和JSP的集成MVC模式-深入分析MVC架构模式.rmvb 第19章:Servlet与JSP核心...
第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...
2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。 3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4. 无连接:无连接的含义是...
在本文中,我们将学习如何使用 Java 语言解析 HTTP 请求报头。HTTP 请求报头是指客户端向服务端发送请求时所携带的信息,它包含了请求的方法、协议版本、请求 URL、主机信息、代理信息等。 为了解析 HTTP 请求报头...
1. **客户/服务器模式**:HTTP协议支持客户端发起请求,服务器响应的服务模式。 2. **简单快速**:客户端只需要发送请求方法和路径,常见的请求方法有GET、HEAD和POST,简单的协议设计使得HTTP服务器的实现较为轻量...
这些PPT文件构成了一个完整的J2EE学习资源库,涵盖了从基础的Servlet和JSP编程,到高级的EJB和JPA使用,再到特定的Cookie管理。通过深入学习和实践这些内容,开发者可以建立起坚实的企业级Java应用开发基础。
在Delphi编程环境中, Indy(Internet Direct)库是一个强大的网络通信组件集,其中IdHTTP组件是用于HTTP协议交互的核心部分。本篇文章将深入探讨如何在Delphi中利用IdHTTP组件进行HTTP请求的报头(Header)读写操作...
- `service()`方法是Servlet接口中的核心方法,负责接收并处理请求。根据HTTP请求类型(GET、POST等),它会调用相应的`doGet()`或`doPost()`方法。 2. **HttpServlet方法**: - `doGet()`和`doPost()`方法是`...
本章主要围绕Servlet进行深入探讨,包括Servlet的基础知识、编程接口以及如何在Tomcat服务器上进行配置和部署。 首先,Servlet是Java平台上的一个核心组件,它扩展了Web服务器的功能,允许开发者用Java代码来处理...
HTTP消息由请求消息和响应消息组成,每种消息都包括开始行(请求消息中的请求行或响应消息中的状态行)、消息报头、空行(仅含CRLF)和消息正文等部分。本篇文章将深入探讨HTTP消息报头中的各种属性及其功能。 ####...
9. **Status Code**:在响应报头中,3位数字表示请求处理的结果,如200表示成功,404表示未找到资源,500表示服务器内部错误。 在C++中封装HTTP报头,你需要创建一个类来代表HTTP请求或响应,包含上述字段,并提供...
Servlet是Java平台上用于开发Web应用程序的核心技术之一,它是一个运行在服务器端的Java类,用于接收HTTP请求并生成响应。Servlet技术替代了早期的CGI技术,提供了更高效、更灵活的服务器端编程模型。本篇文章将深入...
Servlet是Java Web开发中用于处理HTTP请求的核心组件,它提供了对HTTP协议的抽象,并且让开发者可以编写代码来响应来自Web客户端(如浏览器)的请求。Servlet技术是Java EE平台的一部分,广泛应用于构建动态Web应用...
理解Servlet接口的使用,正确配置`web.xml`,掌握HTTP报头的使用,以及如何在Servlet中生成和处理响应,这些都是学习Servlet基础的关键点。通过实践和探索,开发者可以熟练运用Servlet构建高效、动态的Web应用程序。
服务器处理完客户的请求,并收到客户的应答后,即断开连接。 2. 媒体独立:HTTP是媒体独立的,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。 3. 无状态:HTTP协议是无状态协议,无...