龙岩部落社区's Archiver

momoca00 发表于 2008-8-11 10:53

JSP内置对象Cookie的用法

1.什么是Cookie.
PX.fc$Y,U Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。 S*vz7voia-k y7P
举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。
#r[ W.P`+` Z 如果您使用IE浏览器访问Web,您会看到所有保存在您的硬盘上的Cookie。它们最常存放的地方是:c:\windows\cookies(在Win 2000中则是C:\Documents and Settings\您的用户名\Cookies )
mm-o$_-q\5U cookie是以“关键字key=值value“的格式来保存纪录的.
m} YvY1[ 2.创建一个Cookie对象,调用Cookie对象的构造函数可以创建Cookie。Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值。
ar.]Qks-E~ Cookie c=new Cookie(“username”,”john”);
;D}HVyzCd 3. jsp中如果要将封装好的Cookie对象传送到客户端,使用response的addCookie()方法。
S%h t4n#p];D0bxv}G 格式:response.addCookie(c) b0J L]%C/JIE
4.读取保存到客户端的Cookie,使用request对象的getCookies()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。 .F%E+Y2v t9^^b A
例:Cookie[] c=request.getCookies();
nB&O?b5u0xFH if(c!=null) "nJ0Xkig
for(int I=0;I<c.length;I++)
S4vY3x!s if(“username”.equals(c[I].getName())) f+`2_|4[_@0TS
out.println(c[I].getValue());
V7De[!kyi 5.设置Cookie对象有效时间:setMaxAge()。
d(E#g)W*O!z6K$X c.setMaxAge(3600); f:|lsf? F
6.Cookie应用
*Az r0F7U.X4G   1.网站能够精确地知道有多少人浏览过。
I,c{8v2_f 由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一的ID。使用Cookie,网站可以完成以下工作:
ay3B'r6r3}!}w*m   ●测定多少人访问过;
WF LPAi*@   ●测定访问者有多少是新用户(即第一次来访),多少是老用户; v+_5` aV6@mp
  ●测定一个用户多久访问一次网站。
3v:b9z0hwV   网站使用数据库达到上述目标。当一个用户第一次访问时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数。
jVwrl/I3Z2M^ 例:Cookie.jsp CdK,\7e?4LG:LC u+^*f
<%@ page contentType="text/html; charset=GB2312" /_(wy!a+[K!T|+P
import="java.util.Date" %> z HQ h"Uw'S&xAg
<HTML>
vN V G ya%N <HEAD> O(DSZ]&P*o
<TITLE>Cookie的存取</TITLE>
H:Z l}~ </HEAD> D?WM(N;o
<BODY> -CG#x-S8E
<CENTER>
cA$Nf r Q o.l$I)Q <FONT SIZE = 5 COLOR = blue>Cookie的存取</FONT>
T Lh_g!D}u </CENTER> w3rmZ(a1[$[#},B
<HR> iT"x];k7G3A
<P></P> Jk0_9j u7G
<% {DO,P|JD)Ba
//建立Cookie变数
J bX'_3L#V7z Cookie IntVal = new Cookie("IntVal", "100");
Qoy"HC&_ Cookie temp = null; f'?s,u!N nO/B&J
'j8M[wJ"|o
response.addCookie(IntVal); //将Cookie变数加入Cookie中
$w%[%ySqE $L1}KN@"I9A$^!Y
Cookie[] cookies = request.getCookies(); Aq:L)fv.Z3w L!\
//取得Cookie资料 *fn5t%G%M ` d)L
M3it6uhx1K0A7f
int cookielen = cookies.length; WZ6P3V5O&q`F
//取得Cookie变数阵列的长度
O0r?Q9G[1pN
T\!_w4X*_!Puj&c1Rv if(cookielen != 0) //判断是否成取得Cookie资料 yx O5f!R3Gj2je
{ c3Fo4s+@a4_
for (int i = 0; i < cookielen; i++)
X$Swn6M5cpPg[ {
TT k g FPZ temp = cookies[i]; //取得cookies阵列中的Cookie变数
,x9k3CQ-^(q:Jy$_8{ Dw:JQG*h5{
if (temp.getName().equals("IntVal")) KN!s9f-V:Hj$\
{ //判断是否取得名为DateVal的Cookie资料 Usc)Us0dBU3I |
%>
4\u(UI-j;{ J5sB U6s Cookie中<Font color = blue>IntVal</Font>变量的值为
Ua G F;H/b ]2A?m{ <Font color = red><%= IntVal.getValue()%></Font><BR>
U2h lY @;RZ*T)i <% )A.`ypbO
}
1E2Ty^}8p)f
7mCv/}T4u } Ux h8V*e WkkFh9w#q
} :{9\XeXEx

4Y8mT0f O$L9m else
&t+njt-zV {
k'w*m4|J B0n %>
M/G(tZzV'gC 不存在Cookie<BR> /d6]PhD7KO
<%
\ Ovo,em*l|R1b } {w } C:W |$tI
%> K'o&|~tYn1TI
</BODY>
2X4zSal*E,z </HTML>
m:@*q9Q5?"a{ ig ~-n.d#qK
例:CookieDate.jsp I G'a5iKr
<%@ page contentType="text/html; charset=GB2312"
3ec)P:Il!W import="java.util.Date"%> \1t_ x#a"C!W3FB
<HTML>
!DS} _9@Ox,L <HEAD>
vO+|_-X4I/ejJ <TITLE>自Cookie存取日期/时间数据</TITLE> .bM;L#J![
</HEAD> 4S-UV6H dR$G[9e:W
<BODY> #BDCj-]|"UVr
<CENTER>
jNq#a,jG&I <FONT SIZE = 5 COLOR = blue>自Cookie存取日期/时间数据</FONT> R:URK} NEcP \
</CENTER> 0`h5cQbZ)t
<HR>
-Q#t.k/T7y"X$I f <P></P> ]%i*~9q9i2N&K7As
<%
`MCf9y#o[hr Date Now = new Date(); //取得目前的系统时间 q @0Cenx'djH
S*n-\HQ n I"Oydb
Cookie DateVal = new Cookie("DateVal", String.valueOf(Now.getTime())); H"_ Yt$ft9C S Vm
//欲将储存至Cookie时间/日期值转换为毫秒数 ;YcsGzAz7f
)S+Q5mo5L&^:z y
response.addCookie(DateVal); //将Cookie变数加入Cookie中 vk,m f ?fW6K)[

x;wz*q_&FqG ]2cZ Cookie temp = null;
a(f6c2C)l DateVal = null; //重设Cookie变数
6Xq)X*cD;{4Ux
a*@I7_%{Y,V3|8{ P,v Cookie[] cookies = request.getCookies();
G%U N,Q+aGF#KY.H //取得Cookie资料
,b'Q.F%@og
~qs6xZ9` int cookielen = cookies.length;
o mF/S`k3eH$wej //取得Cookie变数阵列的长度 Zu2l.tscJo

\]-Pv4?Tc qjFWh if(cookielen != 0) //判断是否成取得Cookie资料 ncLd.w
{
)n](|{qRJL for (int i = 0; i < cookielen; i++) 1f$yE+m-D8dc7mE
{ )u%Z|9`| I8WLH"e N*G
temp = cookies[i]; //取得cookies阵列中的Cookie变数 &{-TH|3T(W.],R,[V2s!xU

J#~@L%XpQf-y,ndd if (temp.getName().equals("DateVal")) rkX F7Z7Z-t+J
{ //判断是否取得名为DateVal的Cookie资料 6EC!X&n$}M|X
%> 'y%A]1Lv`,\
Cookie中<Font color = blue>DateVal</Font> ~`aD"uJ"g
变量的值为<Font color = red>
Fa sP k <%= new Date(Long.parseLong(temp.getValue())) %>
;U"\tJf }V </Font><BR>
v0R)wh7y <%
Sq+Ndh `5J i }
+d{7a)?S6o }
'x*wNRapc#h } %f?9~zH
else //若无法取得Cookie资料则执行下面的叙述
};dT4B!L { &wKp Pz~
%> /Z c|8sk!e1UY~
无法取得Cookie<BR> I!w%}(~n:~"F-C
<%
!C-X3{fr;af }
gLg t l %> 7t O6r;P AX9]/[(R
</BODY> (f4d#P` X
</HTML> ]i%zw/w6O8C9P7u
[url=http://bbs.palmjob.net/technology/2004/]web开发技术(CString VC字符串)[/url] S,k8i3e1VIy2l"R
更多信息请参考[url=http://bbs.palmjob.net/]java论坛[/url]
k*Rw[ be:{-w#gCd web开发入门宝典(CString VC字符串) [url=http://bbs.palmjob.net/technology/2004/]http://bbs.palmjob.net/technology/2004/[/url]
&l"Vh X F A java技术论坛 [url=http://bbs.palmjob.net/]http://bbs.palmjob.net/[/url]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.