asp---Response对象
Response对象用于向客户端浏览器发送数据,用户可以使用该对象将服务器的数据以HTML的格式发送到用户端的浏览器,它与Request组成了一对接收、发送数据的对象,这也是实现动态的基础。下面介绍它常用的属性和方法。' F" I' f" k. G& P+ L) l
0 v; m+ Y% Q+ J3 H7 w% K! {5 A1 b' @. W( X
1、Buffer属性
+ W0 Q5 v4 ~ w, B n 该属性用于指定页面输出时是否要用到缓冲区,默认值为False。当它为True时,直到整个Active Server Page执行结束后才会将结果输出到浏览器上。如:. F# S% ^6 W1 j
<%Response.Buffer=True%>
{ P/ Q. @ m, D/ P p% ~<html>
# c. ^1 q6 `7 H& b7 ]<Head>" R2 M) P/ z- |5 S2 K( O
<title>Buffer示例</title>6 P8 s g( A$ Q. l5 W
</head>
G) W; ~" v8 g. e3 d) T<body>! i2 P( ]6 C9 K+ _6 z
<%
6 J3 n# `" k$ z2 D for i=1 to 500
2 u1 Z; z, b. M5 ], z response.write(i & "<br>")
- t; ~1 P8 c6 D0 @/ j" u next
K" Q+ M- {2 S2 I2 D( K& P: f" B%>: R$ D _1 d" d n- @/ G
</body>
( _' T! H: A4 m# q j% v</html>
8 }/ V% m4 F6 p& S9 `- D- V 这页执行时,整个主页的所有内容会同时显示在浏览器上,这个主页会存在缓存区中直到脚本执行结束。
# w2 i3 N2 i$ ? L5 b
. m. f7 o. I# ]) i9 ]2、Expires属性0 @' w5 m! d, Q
该属性用于设置浏览器缓存页面的时间长度(单位为分),必须在服务器端刷新。通过如下设置:
) v/ f6 Q& i; j4 ~6 s' o<%Response.Expires=0%> ; F& u4 o9 R, F/ m/ w, l' `+ P
通过在ASP文件中加入这一行代码,要求每次请求是刷新页面,因为Response一收到页面就会过期。! ^6 t' P! B$ ?) k/ @
8 J8 w% R# G. I6 N( a) L1 l6 @' ~4 r
3、Write方法
, `$ r& T: T2 R* H5 {+ w7 H 该方法把数据发送到客户端浏览器,如:
! ^; q1 T' L/ k+ @, P. e* k<%Response.write "Hello,world!"%>
3 N' `9 d3 ?0 R* n& M
' f9 S+ s h5 h) Z! B, u4、Redirect方法6 M& G0 E) c5 y9 _
该方法使浏览器可以重新定位到另一个URL上,这样,当客户发出Web请求时,客户端的浏览器类型已经确定,客户被重新定位到相应的页面。如:) U8 S7 a. s' c3 P# q' Z: w
<html>; x6 v& g, n; R$ h+ J5 x
<head>
; d9 M5 ~0 C7 m, t! ]4 D3 B9 t<title>Redirect示例</title>
+ K' s# i1 J; d0 ]! ?7 h* `</head>
4 W+ c" f% C0 q7 x- p: R<body>; K) ?/ @/ O3 s' u% }: D1 x
<form aciton="formjump.asp" method="post">
$ ]8 O$ i, ]- {- G6 \4 b4 V <select name="wheretogo">- R: @$ s$ Q' C) ?+ z- H& s0 J
<option selected value="fun">Fun</option>8 E) a" I; e: }6 U7 Q3 a. D
<option value="news">News</option>
) [$ k: ?$ |( N# ?& m) P+ v1 E" O+ n <option value="sample">Sample</option>
# x( m6 X* {4 x" `; C </select>
' a, j, l+ V) n- P<input type=submit name="jump" value="Jump">7 c5 l2 l# {8 f& J/ z' z2 m
</form>; o, ?: u9 g0 f3 s3 J1 h
</body>1 ^2 C. F" c& Z( S$ o5 ?
</html>
. @- Q2 C+ i, Y. T/ k& K5 Q5 |0 j 以上是提交的表单,下面是处理表单的文件formjump.asp:- p6 {' W+ o" J3 Q
<%response.buff=true%>2 p: C% M: v$ W8 q+ D
<html>+ S1 t! `' I# h1 C1 E9 m; E% `
<head>& e1 d1 b S; c+ ^% X* G9 _
<title>Redirect示例</title>, e$ p7 U8 n& Y3 b% g
</head>
: |- ]: Y( P2 U$ d4 R<body>
& y% V9 J. [( x$ F0 s8 G( w+ U<%% \/ a) H" e+ e9 e2 j) f* K
thisurl="http://jefenet.yesky.net/"8 |0 Y3 z/ E3 S
where=Request.form("wheretogo")
5 L3 L @7 w+ i9 f7 O% f5 x- ~Select Case where5 X5 T* w" y+ w* C' W9 Q1 s L
case "fun"$ [; u; J: a" R) }$ S
response.redirect thisurl & "/fun/default.asp") F4 i. w: s/ J& U8 K( J
case "news"
, i$ o. J1 n5 a# ]7 y8 e3 c( [" c9 g response.redirect thisurl & "/news/default.asp"
" R( V) a7 f [. b; S case "sample"
( i% y( K" ]* e. g1 n% O response.redirect thisurl & "/sample/default.asp"
$ ]8 X1 E6 _/ y( u* W* fEnd Select) J- O& k3 o. s. t
%>4 Y, I+ _" E+ Q0 y2 N) [
</body>
4 d+ D. @: x* h" M4 y, W<html>
- V9 P& f! @: @" z& Y1 G 这个例子当用户选择了以后,按"Jump"按钮提交表单,服务器接到申请后调用formjump.asp判断后定位到相应的URL。不过这里有一点要注意,HTTP标题已经写入到客户浏览器,任何HTTP标题的修改必须在写入页内容之前,遇到这种问题时,可以如下做:
& d( k/ [( d- r& L$ d在文件的开始<@ Language=..>后写: + m9 V/ E" e7 b( d7 _
Response.Buffer=True9 f' c& _! a% B" a4 x% e
在结尾定:# y" O' U6 G4 A( S# b. L
Response.Flush4 T: K8 s3 Y5 Q. c8 I- x; x
这里Flush是Response的一个方法,它必须是Buffer属性设置为True时才能使用,否则会产生一个运行模式错误。另外一个Clear方法也是用于清除被缓存的页面,同样要Buffer属性设置为True时才能使用。
$ n: ~+ O* n# v, S j! O" K, z l
1 ^. [0 q+ y3 l" Y; m5、End方法# c4 N3 M+ l9 H/ j1 [% y
该方法用于告知Active Server当遇到该方法时停止处理ASP文件。如果Response对象的Buffer属性设置为True,这时End方法即把缓存中的内容发送到客户并清除冲区。所以要取消所有向客户的输出民,可以先清除缓冲区,然后利用End方法。如:
8 h2 f5 Z, J) u4 t: o<%
# n( M# k3 I: h# n# `. AResponse.buffer=true
. V k3 e. M0 b9 t( c. T# e7 Z( C. W: NOn error resume next
, z, k' d' ?+ S2 N4 p5 B! P7 WErr.clear
8 i# p" v3 h9 |# E% k: Dif Err.number<>0 then9 R9 Y, [- z0 T* j% l
Response.Clear* Q' D% z+ ? T+ s/ Y p
Response.End" i% f1 e3 N& H3 @3 S9 p: Y8 @6 Y
end if) e6 }: H& P2 c
%>