HttpServletRequest、 ServletRequest、Request

来源:互联网 发布:数据库的意义 编辑:程序博客网 时间:2024/06/06 20:54
HttpServletRequest接口是继承自ServletRequest接口的。增加了和HTTP相关的一些方法。
 而所谓的 request(在JSP中使用的)其实只是规范中的一个名称而已。它当然是一个对象,但并不是SUN提供的,这是由各个不同的Servlet提供商编写 的,SUN只是规定这个类要实现HttpServletRequest接口,并且规定了各个方法的用途,但具体是什么类是由各个提供商自己决定的。
 你可以在JSP中使用out.println(request)来看看这个类的名字。

ServletRequest

 getParameter()是接受jsp或是html的值。 

 getAtrribute()是接受servlet的传递值。

 ServletRequest里的getServerName()和getLocalName;getSeverPort()和getLocalPort():

 这些方法提供了查询low-level的IP connections的细节和理解connections是如何被路由的一种机制。getRemotePort()方法与原先存在的 getRemoteAddr()和getRemoteHost()方法组合在一起,用于获得client端的IP connections。新的getLocalPort(),getLocalAddr()和getLocalPort()方法用于获得server端的 IP connections。原先存在的getServerName()和getServerPort()方法被重新定义用来获得HTTP层的细节,它们解析 HTTP Host头并返回"主机名:端口"。在一个虚拟主机或用于负载平衡的系统上,这些方法提供了如何知道有哪些clients,proxies或起负载平衡作 用的设备与servlet服务端通信的方式,而不论是物理上的直接连接还是以一种虚拟的模式进行连接。

Request对象探讨

 Request 是ASP里的一个内部对象,用于获取HTTP请求中传递的任意信息(如头信息、表单数据、cookies等等)。所以这是在ASP里面最常用的内部对象, 常用来获得GET方式提交的数据(Request.QueryString)、表单POST提交的数据(Request. Form)和Cookies(Request.Cookies)。
 我们用Request对象可以指定获取某个特定方式提交的数据。比如我们用这段代码获得通过POST提交的数据lake2的值:request.Form("lake2");而request.queryString("CSDN")获得GET方式提交的CSDN的值。
 对 于获取HTTP数据,ASP还给了我们一个更简单的方法:request(key),即直接使用request而不指定数据集合。此时ASP会依次在 QueryString、From、Cookies、ServerVariables、ClientCertificate、Browser中检查匹配的 数据,若发现则返回数据。
 上面6个集合中,ServerVariables、ClientCertificate和Browser的变量是固定了的;而QueryString、From、Cookies的变量可以任意指定。想不到Cookies可以拿来传递任意数据,以前倒没有注意。
 OK,test一下先。在本地web目录新建test.asp文件,内容为:<%=request("b")%>
 Step 1:直接访问http://127.0.0.1/test.asp?b=la<b>k</b>e2,浏览器显示lake2

 Step 2:构造表单提交结果也如step 1

 Step 3: 构造表单,GET传递b值为“He”,同时POST的b为“She”,浏览器显示为“He”。呵呵,按前面的排序有个优先级的

 Step 4:Telnet到本地80端口,构造HTTP请求如下(注意Cookies哦):

Request和Response对象

 从ASP中能够应用客户请求和服务器响应的细节是通过ASP内置的Request和Response对象来实现的。 
 · Request对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名 下存放在浏览器中的cookie,任何作为查询字符串而附于URL后面的字符串或页面的<FORM>段中的HTML控件的值。也提供使用 Secure Socket Layer(SSL)或其他加密通信协议的授权访问,及有助于对连接进行管理的属性。 
 · Response对象:用来访问服务器端所创建的并发回到客户端的响应信息。为脚本提供HTTP变量,指明服务器和服务器的功能和关于发回浏览器的内容的 信息,以及任何将为这个域而存放在浏览器里新的cookie。它也提供了一系列的方法用来创建输出,例如无处不在的Response.Write方法。 
 1、 Request对象成员的概述 
 a) Request对象的集合 
 对象调用方法:Request.Cookies("UserName")=UserName 
 Request对象提供了5个集合,可以用来访问客户端对Web服务器请求的各类信息,这些集合如下表: 
 Request对象的集合及说明 
 集合名称:ClientCertificate 
 说明:当客户端访问一个页面或其他资源时,用来向服务器表明身份的客户证书的所有字段或条目的数值集合,每个成员均是只读 
 集合名称:Cookies 
 说明: 根据用户的请求,用户系统发出的所有cookie的值的集合,这些cookie仅对相应的域有效,每个成员均为只读 
 集合名称:Form 
 说明: METHOD的属性值为POST时,所有作为请求提交的<FORM>段中的HTML控件单元的值的集合,每个成员均为只读 
 集合名称:QueryString 
 说明: 依附于用户请求的URL后面的名称/数值对或者作为请求提交的且METHOD属性为GET(或者省略其属性)的,或<FORM>中所有HTML控件单元的值,每个成员均为只读 
 集合名称:ServerVariables 
 说明: 随同客户端请求发出的HTTP报头值,以及Web服务器的几种环境变量的值的集合,每个成员均为只读 


 b) Request对象的属性 
 Request对象唯一的属性及说明如下表所示,它提供用户请求的字节数量的信息,它很少用于ASP页,我们通常关注指定值而不是整个请求字符串。 
 属性:TotlBytes 
 说明:只读,返回由客户端发出的请求的整个字节数量 

 c) Request对象的方法 
 Request对象唯一的方法及说明如下表所示,它允许访问从一个<FORM>段中传递给服务器的用户请求部分的完整内容。 
 Request对象的方法及说明 
 方法: BinaryRead(count) 
 说明:当数据作为POST请求的一部分发往服务器时,从客户请求中获得count字节的数据,返回一个Variant数组(或者SafeArray)。如 果ASP代码已经引用了Request.Form集合,这个方法就不能用。同时,如果用了BinaryRead方法,就不能访问Request.Form 集合 

 2、 Response对象成员概述 
 a) Response对象的集合 
 Response对象只有一个集合,如下表所示,该集合设置希望放置在客户系统上的cookie的值,它直接等同于Request.Cookies集合。 
 Response对象的集合及说明 
 集合名称: Cookies 
 说明:在当前响应中,发回客户端的所有cookie的值,这个集合为只写 

 b) Response对象的属性 
 Response对象也提供一系列的属性,可以读取(多数情况下)和修改,使响应能够适应请求。这些由服务器设置,我们不需要设置它们。需要注意的是,当设置某些属性时,使用的语法可能与通常所使用的有一定的差异。 
 Response对象的属性及说明 
 属性:Buuffer=True|False 
 说 明:读/写,布尔型,表明由一个ASP页所创建的输出是否一直存放在IIS缓冲区,直到当前页面的所有服务器脚本处理完毕或Flush、End方法被调 用。在任何输出(包括HTTP报送信息)送住IIS之前这个属性必须设置。因此在.asp文件中,这个设置应该<%@LANGUAGE=…%& gt;语句后面的第一行。ASP 3.0缺省设置缓冲为开(True),而在早期版本中缺省为关(False) 

 属性:CacheControl”setting” 
 说明:读/写,字符型,设置这个属性为“Public”允许代理服务器缓存页面,如为“Private”则禁止代理服务器缓存的发生 

 属性:Charset=”value” 
 说明:读/写,字符型,在由服务器为每个响应创建的HTTP Content-Type报头中附上所用的字符集名称(例如:ISO-LATIN-7) 

 属性:Content Type=”MIME-type” 
 说明:读/写,字符型,指明响应的HTTP内容类型,标准的MIME类型(例如“text/xml”或者“Image/gif”)。假如缺省,表示使用MIME类型“text/html”,内容类型告诉浏览器所期望内容的类型 

 属性:Expires minutes 
 说明:读/写,数值型,指明页面有效的以分钟计算的时间长度,假如用户请求其有效期满之前的相同页面,将直接读取显示缓冲中的内容,这个有效期间过后,页面将不再保留在私有(用户)或公用(代理服务器)缓冲中 

 属性:Expires Absolute #date [time]# 
 说明:读/写,日期/时间型,指明当一个页面过期和不再有效时的绝对日期和时间 

 属性:IsClientConnected 
 说明:只读,布尔型,返回客户是否仍然连接和下载页面的状态标志。在当前的页面已执行完毕之前,假如一个客户转移到别一个页面,这个标志可用来中止处理(使用Response.End方法) 

 属性:PICS(“PICS-Label-string”) 
 说明:只写,字符型,创建一个PICS报头定义页面内容中的词汇等级,如暴力、性、不良语言等 

 属性:Status=”Code message” 
 说明:读/写,字符型,指明发回客户的响应的HTTP报头中表明错误或页面处理是否成功的状态值和信息。例如“200 OK”和“404 Not Found” 

 c) Response对象的方法 
 Response对象提供一系列的方法,如下表所示,允许直接处理为返回给客户端而创建的页面内容。 
 Response对象的方法及说明 
 方法:AddHeader(“name”,”content”) 
 说明:通过使用name和Content值,创建一个定制的HTTP报头,并增加到响应之中。不能替换现有的相同名称的报头。一旦已经增加了一个报头就不能被删除。这个方法必须在任何页面内容(即text和HTML)被发住客户端前使用 

 方法:AppendToLog(“string”) 
 说明:当使用“W3C Extended Log File Format”文件格式时,对于用户请求的Web服务器的日志文件增加一个条目。至少要求在包含页面的站点的“Extended Properties”页中选择“URL Stem” 

 方法:BinaryWrite(safeArray) 
 说明:在当前的HTTP输出流中写入Variant类型的SafeArray,而不经过任何字符转换。对于写入非字符串的信息,例如定制的应用程序请求的二进制数据或组成图像文件的二进制字节,是非常有用的 

 方法:Clear() 
 说明:当Response.Buffer为True时,从IIS响应缓冲中删除现存的缓冲页面内容。但不删除HTTP响应的报头,可用来放弃部分完成的页面 

 方法:End() 
 说明:让ASP结束处理页面的脚本,并返回当前已创建的内容,然后放弃页面的任何进一步处理 

 方法:Flush() 
 说明:发送IIS缓冲中所有当前缓冲页给客户端。当Response.Buffer为True时,可以用来发送较大页面的部分内容给个别的用户 

 方法:Redirect(“url”) 
 说明:通过在响应中发送一个“302 Object Moved”HTTP报头,指示浏览器根据字符串url下载相应地址的页面 

 方法:Write(“string”) 
 说明:在当前的HTTP响应信息流和IIS缓冲区写入指定的字符,使之成为返回页面的一部分
原创粉丝点击