日期:2014-05-18  浏览次数:20721 次

Cookie问题,请教!不解决今晚睡不着觉了!!!
PrintWriter   out   =   response.getWriter();
response.setContentType( "text/html;charset=gb2312 ");
response.setCharacterEncoding( "gb2312 ");

out.println( " <html> ");  

out.println( " <head> ");  

out.println( " <title> Servlet   Cookie   Information </title> ");  

out.println( " </head> ");  

out.println( " <body> ");  
Cookie   c   =   null;
Cookie   myCookie   =   new   Cookie( "lw ", "1984 ");
myCookie.setMaxAge(60*1);
response.addCookie(myCookie);
out.print(myCookie.getName());
Cookie[]   cookies   =   request.getCookies();
                                    注意这里!!!!我注释过后就能运行并打印出相应的值
                                    但取消注释就是500错误,大家看看这里出了什么问题,我实在
                                    找不出来了!!!
/*for(int   i   =   0;i <cookies.length;i++){
c   =   cookies[i];
out.print(c.getValue());
}*/
out.println( " </body> ");  

out.println( " </html> ");  

out.flush();

------解决方案--------------------
Cookie c = null;

.......
/*for(int i = 0;i <cookies.length;i++){
c = cookies[i];
out.print(c.getValue());
}*/
-------------------------------

应该报空指针异常,Cookie c = null;要么注释,要么Cookie c = new Cookie( "sth ");
------解决方案--------------------
500错误是什么错误??没什么问题啊 500错误啊
------解决方案--------------------
你那个FOR循环是想打印出刚才保存的cookie里所有项的值吧,,
看清楚了...下面的源码是你的,后面的注释是我加的...

Cookie c = null; //不知道你要这一句做什么???可以删掉
Cookie myCookie = new Cookie( "lw ", "1984 "); //这一句没错,lw=1984
myCookie.setMaxAge(60*1); //只保存60秒,时间短了点,
response.addCookie(myCookie);//这句也没错,这句向客户端添加的是myCookie这个Cookie对象
out.print(myCookie.getName()); //这句没有错.打印的是myCookie对象中的lw的值

注意前面的都没有错...关键在下面...
Cookie[] cookies = request.getCookies();
//配合下面的FOR语句,这句就错了.你把FOR语句注释了,这个是没有错的,编译运行都可以通过.但打印出来不是这个数组对象的值....因为你这个数组中根本就没有值...
request.getCookies();---你得到的上一个页面传递过来的COOKIE..有可能你上一个页面根本就没有传递..就出错了...(也许上一个页面也有传递...只有你自己清楚,我就不知道了..),你可以在FOR外面套一个IF语句.如下:
if(cookies!=null){
for....
}else{
out.print( "cookies[] is null ");
}


这是看了你的代码后一点的个人理解,,仅供参考..本人也才做JAVA WEB不久,可能有不对的对方.
------解决方案--------------------
e nullpointerexception