当前位置:首页 » 编程语言 » java删除cookie

java删除cookie

发布时间: 2022-10-23 15:00:44

⑴ 用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);
    }
    }
    }

    热点内容
    c语言计算ab的值 发布:2025-01-01 07:38:52 浏览:629
    如何配置好健康保障 发布:2025-01-01 07:38:52 浏览:862
    0基础怎样快速学习编程 发布:2025-01-01 07:34:35 浏览:718
    安卓的动态效果在哪里 发布:2025-01-01 07:32:49 浏览:114
    win10ftp下载 发布:2025-01-01 07:30:31 浏览:814
    江西南昌电信ip服务器云服务器 发布:2025-01-01 07:22:44 浏览:997
    图形学算法书 发布:2025-01-01 07:20:41 浏览:562
    ftp不安全的服务器 发布:2025-01-01 07:19:34 浏览:556
    pdf加密了不能复制 发布:2025-01-01 07:12:05 浏览:501
    魔兽插件配置码怎么用 发布:2025-01-01 07:11:25 浏览:793