cookie不能獲取自己設定的,只能獲取系統的名字為JSESSIONID的cookie的解決辦法

EmineWang發表於2013-11-06

今天在做一個登陸頁面,實現在一定時間內反覆登陸不用輸入密碼。為了和其他網站的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);

相關文章