cookie不能获取自己设置的,只能获取系统的名字为JSESSIONID的cookie的解决办法

来源:互联网 发布:正方软件怎么用 编辑:程序博客网 时间:2024/06/08 04:34

今天在做一个登陆页面,实现在一定时间内反复登陆不用输入密码。为了和其他网站的cookie做区别,我开始使用的cookie的name是当前网站的路径basePath

String path = request.getContextPath();//形如 /J2ee
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() + path + "/";

new  cookie(basePth,user)

这样程序不报错,而且浏览器中叶保存了我的设置的cookie,但是就是去不出来,后来发现cookie中的name不能包含分号、逗号、等号、空格、换行,否则需要编码,用BASE64Encoder或URLEncoder。但是可以用/_符号,(就是说可以name可以用path)

另外,还有些注意的是cookie必须设置时间和路径,不然其他页面找不到这个cookie在哪里(本页面中还是可以找到的)

cookie.setMaxAge(10*60);
cookie.setPath(request.getContextPath());//表示只有本项目地址下的所有位置可取如:cookie.setPath(/J2ee)表示只有J2ee工程下的所有位置可取这个cookie


清楚cookie办法:

清除cookie也就是覆盖之前的cookie,新的cookie和以前的cookie的name 一样就可以覆盖之前的cookie

//cookie中的用户信息清空
Cookie cookie = new Cookie(path, null);//path就是cookie的名字,要和被覆盖的cookie的名字一样
cookie.setMaxAge(0);//0指0秒,设置为null 后立即失效
cookie.setPath(request.getContextPath());//千万不可少,不然这个站点找不到这个cookie

//切记 设好cookie 后要加入response中
response.addCookie(cookie);



清除session,就是把之前那个session的值设为null

request.getSession().setAttribute("user", null);