Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用

对请求报头的访问,使Servlet可以执行许多优化,创建高效的Servlet。

一,在Servlet 中读取HTTP请求报头 —— HttpServletRequest接口 

在Servlet中读取HTTP头,调用HttpServletRequest的getHeader方法。

getHeader(String  报头名)方法:返回客户请求中提供的指定头信息。结果为字符,参数不区分大小写;否则,返回null。   在调用该方法获取结果之前确保HOST不为空。

查看请求头信息: 

getCookies方法:返回Cookie头的内容,经解析后存放在Cookie对象的数组中。

getAuthType和getRemoteUser方法:分别读取Authorization头中的一部分内容;

getDateHeader和getIntHeader方法:读取指定的头,然后返回日期值或整数值。

枚举当前特定请求中的报头名称:

getHeaderNames()方法:返回一个Enumeration对象。

获取请求主命令行信息:

getMethod方法:返回请求方法,请求方法通常是GET或者POST,但也有可能是HEAD、PUT或者DELETE。

getRequestURI方法:返回URI(URI是URL的从主机和端口之后到表单数据之前的那一部分)。

getRequestProtocol方法:返回请求命令的第三部分,一般是“HTTP/1.0”或者“HTTP/1.1”。

获取所有请求报头信息

首先使用getHeaderNames()获取请求中的报头名称Enumeration对象。   遍历Enumeration对象,使用getHeader方法获取请求报头信息。

二,HTTP请求报头概述

1,HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST)。   如有必要,客户程序还可以选择发送其他的请求头。   大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。

2,下面是一些最常见的请求头:

Accept:浏览器可接受的MIME类型。 Servlet检查Accept来确定使用哪种格式返回给客户端资源。     IE6和7 bug:重新载入页面发送的Accept报头不正确,但在最初的请求中是正确的。

Accept-Charset:浏览器可接受的字符集。

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。 Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。      在使用任何类型的内容编码之前,一定要检查Accept-Dncoding报头。

Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。

Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。

Connection:表示是否需要持久连接。   如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),  它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。    要 实现这一点,Servlet需要在应答中发送一个Content-Length头,  最简单的实现方法是:先把内容写入 ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。

Content-Length:表示请求消息正文的长度。

Cookie:这是最重要的请求头信息之一。

From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。

Host:初始URL中的主机和端口。

If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。

Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。      在不要的时候才使用User-Agent。      在使用的时候要检查是否为null。      区分Netscape和IE 要检查MSIE 而非"Mozilla"。      这个报头可以加造而servlet并不能区分这种情况。

UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。        有关HTTP头完整、详细的说明,请参见http://www.w3.org/Protocols/的HTTP规范。

三,压缩页面减少下载时间Accept-Encoding应用

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。

Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以 减少5到10倍的下载时间。      在使用任何类型的内容编码之前,一定要检查Accept-Dncoding报头。  对于较长文本页面,使用Gzip压缩可以有效减少下载时间。由于并非所有的浏览器都支持Gzip,支持的都会设置Accept-Encoding请求 头。

通过Servlet检查Accept-Encoding请求头向支持Gzip压缩的浏览器发送压缩web页面(使用PrintWrite封装GzipOutputSteam输出),向不支持的发送常规web页面(使用PrintWrite输出)。

四,区分不同的浏览器类型User-Agent应用

User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。

在不要的时候才使用User-Agent。      在使用的时候要检查是否为null。

区分Netscape和IE 要检查MSIE 而非"Mozilla"。   这个报头可以加造而servlet并不能区分这种情况。

五,依据客户的到达方式定制页面Referer应用

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

使用这个报头可以完成的任务:

创建一个工作或职业网站,承袭链接到它的相关网站的外观感觉。

使用引用页的名称来区分。   根据链接来自于防火墙内部还是外部,更改页面内容。注意:和其他所有的报头一样,易于伪造。

提供相应的链接,使用户返回之前的网页。

跟踪标题广告的有效性,或记录显示您的广告的不同网站的点击率。

Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用,布布扣,bubuko.com

时间: 2024-10-22 12:39:47

Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用的相关文章

TC608——Servlet中的Request和response请求响应技术

request和response author:lxy 1.了解request和response request:请求对象 response:响应对象 请求和响应对象由服务器创建,每次请求都创建新的请求响应对象,响应结束,对象自动消失. 作用: request可以处理所有的Http请求,----获取Http请求信息 response可以处理所有的Http响应,----设置Http响应信息 补充:请求消息由 请求行.请求头.请求内容组成 2.request和response体系介绍 |-Servl

前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成相应的响应发送到客户端。前端控制器既可以使用Filter实现(Struts2采用这种方式),也可以使用Servlet来实现(spring MVC框架)。

本文转自http://www.cnblogs.com/davidwang456/p/4090058.html 感谢作者 servlet的生命周期 首先我们回忆一下servlet的生命周期: Servlet生命周期分为三个阶段:[http://www.cnblogs.com/cuiliang/archive/2011/10/21/2220671.html] 1,初始化阶段  调用init()方法.Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init(

接口测试基础知识详解http请求由三部分组成,分别是:请求行、消息报头、请求正文 1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF 其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了

HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:http://host[":"port][abs_path]http表示要通过HTTP协议来定位网络资源:host表示合法的Internet主机域名或者IP地址:port指定一个端口号,为空则使用缺省端口80:abs_path指定请求资源的URI:如果URL中没有给出abs_path,那么当它作为请求URI时,必须以"/"的形式给出,通常这个工作浏览器自动帮我们完成.e

Servlet、SpringMVC、Struts2对请求-响应模式实现

从整个B/S程序的运行结构来看,J2EE的表示层解决方案实际上是对"请求-响应"模式的一种实现.既然谓之"请求-响应"也就势必存在着两大沟通角色: 请求对象和响应对象.Servlet.SpringMVC.Struts2对请求-响应的实现是分别基于参数-参数模式.参数返回值.和POJO模式的,由于这两大角色的承载载体和编程语言实现基础都不同,因此三种模式的可谓风格迥异. 参数-参数模式 参数-返回值模式 POJO模式 请求方 方法参数 方法参数 属性变量 响应方 方法

java端拦截器判断客户的的请求是否是ajax请求

1 java端拦截器判断客户的的请求是否是ajax请求 2 3 4 发表于 2014-08-22 23:38:08 5 普通请求与ajax请求的报文头不一样,通过如下 6 7 String requestType = request.getHeader("X-Requested-With"); 8 9 如果requestType能拿到值,并且值为XMLHttpRequest,表示客户端的请求为异步请求,那自然是ajax请求了,反之如果为null,则是普通的请求 10 11 http:/

http请求(get 和 post 请求)与响应

一.http请求 http请求基本格式 =================================================== <request line> 请求行 <headers>  请求头(参数头) <blank line>   空白行 [<request-body>]  请求实体(get没有  post有) ====================================== 1.1 请求行: 位于请求消息的第一行 格式:请求

HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头

http://blog.csdn.net/qxs965266509/article/details/8082810 用于HTTP请求中的常用请求头字段 Accept:用于高速服务器,客户机支持的数据类型 Accept-Charset:用于告诉服务器,客户机采用的编码格式 Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式 Accept-Language:客户机的语言环境 Host:客户机通过这个头高速服务器,想访问的主机名 If-Modified-Since:客户机通过这个

反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client,此时的代理server对外就表现为反向代理server。

? ?Nginx安装好之后.開始使用它来简单实现反向代理与负载均衡的功能.在这之前.首先得脑补一下什么是反向代理和负载均衡. ? 反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client.此时的代理server对外就表现为反向代理server. ? ?通俗来讲,反向代理server就好比我们常说的中介.Internetclient能够看作是租房的客户,而内部网络的server好比是房东.租户通过中

Nginx与Tomcat实现请求动态数据与请求静态资源的分离

上篇博客说明了Nginx在应用架构中的作用,以及负载均衡的思路.这篇实践一下其中的访问静态资源与访问动态资源的操作. 一.认识访问静态资源与访问动态资源的区别 静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据. 如:图片.字体.js文件.css文件等等.在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内. 动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据. 如:请求明天的天气信息数据.请求查看账户余额. 二.请求动