java刪除cookie
⑴ 用java完成以下要求!前提只使用一個Cookie!
Cookie cookie = new Cookie("key", "value");
cookie.setMaxAge(600);
設置600秒生存期,如果設置為負值的話,則為瀏覽器進程Cookie(內存中保存),關閉瀏覽器就失效。
cookie.setPath("/test/test2");
設置Cookie路徑,不設置的話為當前路徑(對於Servlet來說為request.getContextPath() + web.xml里配置的該Servlet的url-pattern路徑部分)
response.addCookie(cookie);
2.讀取Cookie
該方法可以讀取當前路徑以及「直接父路徑」的所有Cookie對象,如果沒有任何Cookie的話,則返回null
Cookie[] cookies = request.getCookies();
3.刪除Cookie
Cookie cookie = new Cookie("key", null);
cookie.setMaxAge(0);
設置為0為立即刪除該Cookie
cookie.setPath("/test/test2");
刪除指定路徑上的Cookie,不設置該路徑,默認為刪除當前路徑Cookie
response.addCookie(cookie);
4.注意:假設路徑結構如下
test/test2/test345/test555/test666
a.相同鍵名的Cookie(值可以相同或不同)可以存在於不同的路徑下。
b. 刪除時,如果當前路徑下沒有鍵為"key"的Cookie,則查詢全部父路徑,檢索到就執行刪除操作(每次只能刪除一個與自己最近的父路徑Cookie)
FF.必須指定與設定cookie時使用的相同路徑來刪除改cookie,而且cookie的鍵名不論大寫、小寫或大小混合都要指定路徑。
IE.鍵名小寫時,如果當前路徑為/test/test2,如果找不到再向上查詢/test、/test555、/test345,如果還找不到就查詢/ 。(/test555/test666不查詢)
鍵名大小寫混合或大寫時,不指定路徑則默認刪除當前路徑,並且不向上查詢。
c.讀取Cookie時只能讀取直接父路徑的Cookie。
如果當前路徑為/test/test2,要讀取的鍵為"key"。當前路徑讀取後,還要讀取/test,/test讀取後,還要讀取/
d.在做Java的web項目時,由於一般的Web伺服器(如Tomcat或Jetty)都用Context來管理不同的Web Application,這樣對於每個Context有不同的Path,
在一個Server中有多個Web Application時要特別小心,不要設置Path為/的Cookie,容易誤操作。(當然前提是域名相同)
⑵ 怎麼在java中使用cookie
1、Cookie的來歷與作用
Cookie是WEB伺服器通過瀏覽器保存在WWW用戶端硬碟上的一個文本文件,這個文本文件中包含了文本信息。
文本信息的內容以「名/值」對(key/value)的形式進行存儲。
可以讓WEB開發者通過程序讀寫這個文本文件。
XP中保存Cookie的目錄是「C://Documents and Settings\用戶名\Cookies」
Cookie的作用
解決瀏覽器用戶與Web伺服器之間無狀態通信。
2Cookie編程
//創建對象
Date date = new Date() ;
Cookie c = new Cookie("lastVisited",date.toString()) ;
//設定有效時間 以s為單位
c.setMaxAge(60) ;
//設置Cookie路徑和域名
c.setPath("/") ;
c.setDomain(".zl.org") ; //域名要以「.」開頭
//發送Cookie文件
response.addCookie(c) ;
//讀取Cookie
Cookie cookies[] = request.getCookies() ;
Cookie c1 = null ;
if(cookies != null){
for(int i=0;i
c1 = cookies[i] ;
out.println("cookie name : " + c1.getName() + " ") ;
out.println("cookie value :" + c1.getValue() + "
");
}
}
//修改Cookie
Cookie cookies[] = request.getCookies() ;
Cookie c = null ;
for(int i=0;i
c = cookies[i] ;
if(c.getName().equals("lastVisited")){
c.setValue("2010-04-3-28") ;
c.setMaxAge(60*60*12) ;
response.addCookie(c) ; //修改後,要更新到瀏覽器中
}
}
//刪除Cookie,(將Cookie的有效時間設為0)
Cookie cookies[] = request.getCookies() ;
Cookie c = null ;
for(int i=0;i
c = cookies[i] ;
if(c.getName().equals("lastVisited")){
c.setMaxAge(0);
response.addCookie(c) ;
}
}
4、使用Cookie的注意事項
·Cookie的大小和數量是有限制的。
·Cookie在個人硬碟上所保存的文本信息是以明文格式進行保存的,沒有任何的加密措施。
·瀏覽器用戶可以設定不使用Cookie。
5、實例:Servlet中的Cookie編程
cookieInput.html頁面
SetCookie.java
GetCookie.java
cookieInput.html頁面中的參數提交到SetCookie.java中,由SetCookie.java保存在瀏覽器的Cookie中,在SerCookie.java中鏈接到GetCookie.java從而讀取剛剛保存的Cookie。
SetCookie.java :
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username") ;
//保存Cookie
if(username !=""){
Cookie c1 = new Cookie("username",username) ;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
Cookie c2 = new Cookie("lastVisited",sdf.format(new java.util.Date())) ;
c1.setMaxAge(60*60*60*12*30) ;
c2.setMaxAge(60*60*60*12*30) ;
response.addCookie(c1) ;
response.addCookie(c2) ;
out.println("Cookie保存成功!");
out.println("
") ;
out.println("讀取Cookie") ;
}else{
response.sendRedirect("../cookieInput.html") ;
}
out.flush();
out.close();
}
GetCookie.java:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("
");
out.println("");
out.println("
");
out.println("
");
//讀取Cookie
Cookie cookies[] = request.getCookies() ;
Cookie c = null ;
if(cookies != null){
for(int i=0;i
c = cookies[i] ;
if(c.getName().equals("username")){
out.println("用戶名: "+c.getValue());
out.println("
");
}
if(c.getName().equals("lastVisited")){
out.println("上次登錄的時間: "+c.getValue());
}
}
}else{
out.println("No cookie !");
}
out.println("
");
out.println("
");
out.flush();
out.close();
}
⑶ java,cookie不是一般在瀏覽器關閉時被刪除嗎,那他怎樣保存用戶的歷史信息
一、cookie機制和session機制的區別
具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。
同時我們也看到,由於才伺服器端保持狀態的方案在客戶端也需要保存一個標識,所以session
機制可能需要藉助於cookie機制來達到保存標識的目的,但實際上還有其他選擇
二、會話cookie和持久cookie的區別
如果不設置過期時間,則表示這個cookie生命周期為瀏覽器會話期間,只要關閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽會話期的cookie被稱為會話cookie。會話cookie一般不保存在硬碟上而是保存在內存里。
如果設置了過期時間,瀏覽器就會把cookie保存到硬碟上,關閉後再次打開瀏覽器,這些cookie依然有效直到超過設定的過期時間。
存儲在硬碟上的cookie可以在不同的瀏覽器進程間共享,比如兩個IE窗口。而對於保存在內存的cookie,不同的瀏覽器有不同的處理方式。
三、如何利用實現自動登錄
當用戶在某個網站注冊後,就會收到一個惟一用戶ID的cookie。客戶後來重新連接時,這個
用戶ID會自動返回,伺服器對它進行檢查,確定它是否為注冊用戶且選擇了自動登錄,從而使用戶務需給出明確的用戶名和密碼,就可以訪問伺服器上的資源。
四、如何根據用戶的愛好定製站點
網站可以使用cookie記錄用戶的意願。對於簡單的設置,網站可以直接將頁面的設置存儲在cookie中完成定製。然而對於更復雜的定製,網站只需僅將一個惟一的標識符發送給用戶,由伺服器端的資料庫存儲每個標識符對應的頁面設置。
五、cookie的發送
1.創建Cookie對象
2.設置最大時效
3.將Cookie放入到HTTP響應報頭
如果你創建了一個cookie,並將他發送到瀏覽器,默認情況下它是一個會話級別的cookie:存儲在瀏覽器的內存中,用戶退出瀏覽器之後被刪除。如果你希望瀏覽器將該cookie存儲在磁碟上,則
需要使用maxAge,並給出一個以秒為單位的時間。將最大時效設為0則是命令瀏覽器刪除該cookie。
發送cookie需要使用HttpServletResponse的addCookie方法,將cookie插入到一個Set-CookieHTTP請求報頭中。由於這個方法並不修改任何之前指定的Set-Cookie報頭,而是創建新的報頭,因此我們將這個方法稱為是addCookie,而非setCookie。同樣要記住響應報頭必須在任何文檔內容發送到客戶端之前設置。
六、cookie的讀取
1.調用request.getCookie
要獲取有瀏覽器發送來的cookie,需要調用HttpServletRequest的getCookies方法,這個調用返回Cookie對象的數組,對應由HTTP請求中Cookie報頭輸入的值。
2.對數組進行循環,調用每個cookie的getName方法,直到找到感興趣的cookie為止
cookie與你的主機(域)相關,而非你的servlet或JSP頁面。因而,盡管你的servlet可能只發送了單個cookie,你也可能會得到許多不相關的cookie。
例如:
StringcookieName=「userID」;
Cookiecookies[]=request.getCookies();
if(cookies!=null){
for(inti=0;i
Cookiecookie=cookies[i];
if(cookieName.equals(cookie.getName())){
doSomethingWith(cookie.getValue());
}
}
}
七、如何使用cookie檢測初訪者
A.調用HttpServletRequest.getCookies()獲取Cookie數組
B.在循環中檢索指定名字的cookie是否存在以及對應的值是否正確
C.如果是則退出循環並設置區別標識
D.根據區別標識判斷用戶是否為初訪者從而進行不同的操作
八、使用cookie檢測初訪者的常見錯誤
不能僅僅因為cookie數組中不存在在特定的數據項就認為用戶是個初訪者。如果cookie數組為null,客戶可能是一個初訪者,也可能是由於用戶將cookie刪除或禁用造成的結果。
但是,如果數組非null,也不過是顯示客戶曾經到過你的網站或域,並不能說明他們曾經訪問過你的servlet。其它servlet、JSP頁面以及非JavaWeb應用都可以設置cookie,依據路徑的設置,其中的任何cookie都有可能返回給用戶的瀏覽器。
正確的做法是判斷cookie數組是否為空且是否存在指定的Cookie對象且值正確。
⑷ OpenDaylight SR3中,怎麼用java代碼刪除流表
使用cookie, cookieMask。
在OpenFlow1.3中,cookie相當於id,cookieMask相當於mask(廢話)。
具體在OpenFlow1.3白皮書中有這樣一句話:
(flow entry:cookie&flow mod:cookie mask) == (flow mod:cookie&flow mod:cookie mask).
flowentry:cookie就是已經存在在交換機上的流表項
flow mod:cookie就是你從控制器發送給交換機的刪除流表的消息中的cookie
flow mod:cookie mask也是你從控制器發送給交換機的刪除流表的消息中的cookie mask
⑸ 請問java後端通常如何處理cookie
親,Cookie可以將用戶信息及一些其他信息保存到本地(例如瀏覽器),能夠保證與session的跟蹤對接以及辨別用戶身份。
親如果學ava後端通常如何處理cookie的話可以到雲南新華電腦學院來看看,希望可以幫到親
⑹ java web中怎樣刪除一個cookies
通過設置最大存活時間的形式來進行cookies注銷刪除。
舉例:
Cookie NewCookie=new Cookie("newcookie",null); //將之前設置NewCookie值設置為空
NewCookie.setMaxAge(0); //設置存活時間為0.此時cookies就會自動注銷
⑺ java中cookie的存活期可以無限嗎
cookie.setMaxAge(60*60);為設置本cookie的存活期,以秒為計數單位,cookie.setMaxAge(60*60*24*30*12)為一年
cookie.setMaxAge(60*60*24*30*12*300)為三百年,這樣cookie的有效期就相當與無限也可以設為更大的值,但我想cookie值只要相對來說無限就足夠了
⑻ JAVAweb中當用戶點擊退出登錄時,清除Cookie,
cookie.setMaxAge(0);//設置為0為立即刪除該Cookie
cookie.setPath("/");//刪除指定路徑的cookie,不設置該路徑,默認為刪除當前路徑Cookie
response.addCookie(cookie);
⑼ 如何通過java清除cookie
方法如下
public void insertCookie(HttpServletRequest request,
HttpServletResponse response, Long appId) {
if (appId == null) {
appId = (long) -1;
}
this.cleanCookie(request, response, appId);
Cookie cookie = new Cookie("appId", "" + appId);
cookie.setPath("/");
response.addCookie(cookie);
}
public void cleanCookie(HttpServletRequest request,
HttpServletResponse response, long appId) {
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().contains("" + appId)) {
String cookieName = cookie.getName();
Cookie newCookie = new Cookie(cookieName, null);
newCookie.setPath("/");
response.addCookie(newCookie);
}
}
}