- 浏览: 85706 次
文章分类
最新评论
第五章客户请求的处理: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 733第十六章:简化对Java代 ... -
servlet和jsp核心编程(第2版)第十五章servlet和JSP的集成,模型-视图-控制器构架
2012-08-23 14:59 739第十五章:servlet和JSP的集成,模型-视图-控制器构架 ... -
servlet和jsp核心编程(第2版)第十四章 JavaBean组件在JSP文档中的应用 学习笔记
2012-08-21 11:55 703第十四章 JavaBean组件在JSP文档中的应用 一、bea ... -
servlet和jsp核心编程(第2版)第十三章 在JSP页面中包含文件和applet学习笔记
2012-08-20 15:53 863第十三章 在JSP页面中包 ... -
servlet和jsp核心编程(第2版)第十二章page指令学习笔记
2012-08-19 17:00 756第十二章 控制所生成的servlet的结构:JSP page指 ... -
servlet和jsp核心编程(第2版)第十一章jsp脚本元素的调用学习笔记
2012-08-18 21:09 815第十一章 用JSP脚本元素 ... -
servlet和jsp核心编程(第2版)第十章jsp技术概述学习笔记
2012-08-18 10:37 689第十章jsp技术概述 学习笔记: 一servlet和jsp的区 ... -
servlet和jsp核心编程(第2版)第九章会话跟踪学习笔记
2012-08-17 17:30 893第九章 会话跟踪 核心 ... -
servlet和jsp核心编程(第2版)第八章cookie管理学习笔记
2012-08-08 12:27 843第八章 cookie管理 核心方法: 1.在创建cookie对 ... -
servlet和jsp核心编程(第2版)第七章服务器响应的生成:HTTP响应报头学习笔记
2012-08-06 17:45 729第七章:服务器响应的 ... -
servlet和jsp核心编程(第2版)第六章服务器响应的生成:HTTP状态代码学习笔记
2012-08-05 10:52 737第六章:服务器响应的生成:HTTP状态代码 核心方法: 1.在 ... -
servlet和jsp核心编程(第2版)第四章客户请求的处理,表单数据学习笔记
2012-07-31 16:05 1235第四章学习笔记 客户请 ... -
servlet和jsp核心编程(第2版)第三章servlet基础学习笔记
2012-07-29 10:43 707第三章: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...
第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...
HTTP头字段包括4类: general-header ; request-header ; response-header ; entity-header
用java解析HTTP请求报头
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 ...
本文研究的主要是Python使用requests发送POST请求的相关内容,具体介绍如下。 一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行 请求报头 消息主体 HTTP协议规定post提交的...
详细介绍了HTTP协议之消息报头中各个属性。
5、在页面中通过声明标识声明的变量和方法的有效范围为(整个页面),他们将成为JSP页面被转换成Java类后类中的(属性)和(方法)。 6、通常应用(<jsp:useBean>)动作标识可以在JSP页面中创建一个Bean实例,并且通过属性的...
http报头for Arduino生成工具
请求行、请求头部、空行、请求数据 一个典型的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...
科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 4.1-IP报头结构实验科来软件 ...
第五章:数组 71 学习目标 71 数组的描述 72 创建数组 72 多维数组 78 拷贝数组 80 内容总结 83 独立实践 84 第六章:继承 86 学习目标: 86 单继承(single inheritance) 87 访问控制 89 方法重载(method ...
HTTP 请求方法 根据 HTTP 标准,HTTP 请求可以使用多种请求方法。...向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资
urllib2学习笔记,用于平时学习时的笔记使用: #返回读取网页全部内容,字符串 html = response.read() #返回访问的问页响应码 print response. getcode() #返回实际数据的URL print response.geturl() #返回访问...
自己封装HTTP报头,发送服务器,接受返回信息!用于新手学习!
主要给大家介绍了关于为HttpClient添加默认请求报头的四种解决方案,文中通过示例代码介绍的非常详细,对大家学习或者使用HttpClient具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧