JSP读取COOKIES的问题(100分)

  • 主题发起人 主题发起人 chili1979
  • 开始时间 开始时间
C

chili1979

Unregistered / Unconfirmed
GUEST, unregistred user!
我用JSP读COOKIES的内容
程序如下:
代码:
<html>
<head>读COOKES例子
</head>
<body>
<table border=1>
<tr><td>Name</td><td>value</td></tr>
<%
Cookie cookies[]=request.getCookies();
Cookie sCookie=null;
String svalue=null;
String sname=null;
for(int i=0;i<cookies.length;i++)
{
sCookie=cookies[i];
svalue=sCookie.getValue();
sname=sCookie.getName();
%>
<tr><td><%=sname%></td><td><%=svalue%></td></tr>
<%
}
%>
</table>
</body>
</html>
可结果只有一条,但我的COOKIES里明明有许多,
请各位指教,多谢
 
试下这样:
<table border=1>
<tr><td>Name</td><td>value</td></tr>
<%
Cookie[] cookies=request.getCookies();
for(int i=0;i<cookies.length;i++)
{
Cookie c = cookies;
String sname = c.getName();
String svalue = c.getValue();
%>
<tr><td><%=sname%></td><td><%=svalue%></td></tr>
<%
}
%>
</table>
 
cookies.length=1,当然只有一条。
 
谢谢楼上的两位,但还是不行
而且我发现我写Cookies之后,重定向到这个页面,cookies里边是有值的,
但如果我重新登陆,直接打开这个页面,cookie里边是空的? 为什么?
怎么能解决掉呢?
哪位大虾有过应用cookies的例子,能给小弟参考一下吗?
多谢!
 
原来这个问题,你又说你的机上有许多cookies,
你写cookie的方法是怎样的,我想是你写cookie方法的原因,
你的cookie并没有保存到浏览器中.
 
对,是啊,
我写COOKIES是在servlet里,代码如下:
代码:
Cookie c1=new Cookie("logid",logid);
c1.setMaxAge(1000 * 60 * 60 * 24 * 30 *12);
response.addCookie(c1);
Cookie c2=new Cookie("passwd",passwd);
c2.setMaxAge(1000 * 60 * 60 * 24 * 30 *12);
response.addCookie(c2);
是还需要什么动作才能把它保存到浏览器吗? 请不吝赐教!
 
我看了一下,如果关掉浏览器,重新登陆,COOKIES是空的
到了页面,系统自动建一个COOKIES,名称是JSESSIONID,值是随机的,12位
迷惑[?],我不知道怎么才可以解决掉
 
你的这段代码下面还有注释语句
//
这一小段JSP文件可以读出用户硬盘上的所有有效的Cookie,也就是仍然在存活期内的Cookie文件。并用表格的形式列出每个Cookie的名字和内容。
  我们来逐行分析一下这段代码:
  Cookie cookies[]=request.getCookies() 我们用request.getCookies()读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面。
  接下来我们用一个循环语句遍历刚才建立的Cookie对象数组,我们用sCookie=cookies取出数组中的一个Cookie对象,然后我们用sCookie.getValue()和sCookie.getName()两个方法来取得这个Cookie的名字和内容。
  通过将取出来的Cookie的名字和内容放在字符串变量中,我们就能对其进行各种操作了。在上面的例子里,可通过循环语句的遍历,将所有Cookie放在一张表格中进行显示。

四、 需要注意的一些问题
  通过上面两个简单的例子,可以看到,用JSP进行Cookie的操作,是非常简单的。不过我们在实际操作中还要注意一些问题:   1. Cookie的兼容性问题
  Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。
  2. Cookie的内容
  同样的Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。这也就是为什么我们在例子中设定Cookie的内容为"Test_Content"的原因。
  虽然在Cookie Version 1规定中放宽了限制,可以使用这些字符,但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在Cookie的内容中尽量避免使用这些字符。
//
 
谢谢楼上的兄弟
不过你的这个我看过了
那你看了我的写COOKIES的代码了吗??
我的cookies设置的存活期应该够长啊
还有,我的浏览器是
 
IE6.0,应该可以吧 :)
teny_yu兄说的很有道理,我不知道哪里有问题,好象是没存到本地硬盘!
 
我用你的代码在我的机上试了好几次,把浏览器关了又开,开了又关,不存在你说的问题。
我用的是IE5.0。当第一次把cookie加后,我就把这些代码去掉,再关掉所有IE.再重开,
一样存在。你设置的时间足够长了,如果设为setMaxAge(10),我试过了,再重开,就没了.
代码如下:(请问你的logid和passwd是什么变量来的,值是多少,太奇怪了)
String logid = "teny";
String passwd = "yulicheng";
Cookie c1=new Cookie("logid",logid);
c1.setMaxAge(1000 * 60 * 60 * 24 * 30 *12);
response.addCookie(c1);
Cookie c2=new Cookie("passwd",passwd);
c2.setMaxAge(1000 * 60 * 60 * 24 * 30 *12);
response.addCookie(c2);
 
哦,是啊 teny_yu,十分感谢:)
我的logid,passwd是登陆时的用户名和密码,现在设置的时间是1年,肯定足够了
难道是我的IE设置有问题?
可我的IE都是默认设置啊
我再好好看看!
兄弟,有MSN吗?我的:li_zhongguo2008@hotmail.com
 
在公司用MSN好慢,我也少用,现在机没装,家里的电脑才装。
 
我换了一台机器,还是不行,不知道哪里有问题,烦[:(!][?]
 
多人接受答案了。
 

Similar threads

后退
顶部