`
落地窗
  • 浏览: 442701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cookie的笔记

阅读更多
1.cookie机制

cookie机制采用的是在客户端保持 HTTP 状态信息的方案
Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一个小文本文件。
一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时,都会在HTTP请求头中将这个Cookie回传给WEB服务器。
底层的实现原理: WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP请求消息中增加Cookie请求头字段将Cookie回传给WEB服务器。
一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

2.Servlet程序中使用Cookie
Servlet API中提供了一个javax.servlet.http.Cookie类来封装Cookie信息,它包含有生成Cookie信息和提取Cookie信息的各个属性的方法。
Cookie类的方法:
构造方法: public Cookie(String name,String value)
getName方法
setValue与getValue方法
setMaxAge与getMaxAge方法
setPath与getPath方法
HttpServletResponse接口中定义了一个addCookie方法,它用于在发送给浏览器的HTTP响应消息中增加一个Set-Cookie响应头字段。
HttpServletRequest接口中定义了一个getCookies方法,它用于从HTTP请求消息的Cookie请求头字段中读取所有的Cookie项。

3.cookie的发送

1.创建Cookie对象
2.设置最大时效
3.将Cookie放入到HTTP响应报头
如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie; 存储在浏览器的内存中,用户退出浏览器之后被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。
发送cookie需要使用HttpServletResponse的addCookie方法,将cookie插入到一个 Set-Cookie HTTP响应报头中。由于这个方法并不修改任何之前指定的Set-Cookie报头,而是创建新的报头,因此将这个方法称为是addCookie,而非setCookie。


4.会话cookie和持久cookie的区别

如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。

5.cookie的读取

1.调用request.getCookies
   要获取浏览器发送来的cookie,需要调用HttpServletRequest的getCookies方法,这个调用返回Cookie对象的数组,对应由HTTP请求中Cookie报头输入的值。
2.对数组进行循环,调用每个cookie的getName方法,直到找到感兴趣的cookie为止



6.跟踪用户上次访问站点的时间

功能:
帮助网站实现提示客户端计算机上次访问网站的时间
实现原理:
将每一个会话作为一次访问过程,将每次会话的开始时间作为每次访问网站的时间,然后将这个时间以Cookie的形式存储到客户端的计算机中,客户端进行下次访问时通过该Cookie回传上次访问站点的时间值。
为了让Cookie信息在客户端浏览器或计算机关闭后仍然保持存在,Cookie的保存时间被设置为了一年。

cookie小练习:这样使用cookie

实现登陆页面:
首先登陆:login.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${requestScope.info}
<form action="hello.jsp" method="post"">
  name: <input type="text" name="name" />
  password: <input type="password" name="pwd" />
  <input type="submit" value="Submit" />
</form>
</body>
</html>

cookie的机制:hello.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<% //1.获取name的值
String name =request.getParameter("name");
String password =request.getParameter("password");
//2.如果name不为空,说明是页面请求过来的,Hello:name的值,同时更新cookie的信息:新建一个cookie。并设置最大实效,返回客户

if(name!=null){
  out.print("hello"+name);
  Cookie cookie = new Cookie("name",name);
  cookie.setMaxAge(30);
  response.addCookie(cookie);
 
}

if(password!=null){
 
  out.print("passwor"+password);
  Cookie cookie_ =new Cookie("password",password);
  cookie_.setMaxAge(30);
  response.addCookie(cookie_);
 
}
//3. 如果name为空,说明直接访问该页面
else{
  Cookie[] cookies =request.getCookies();
   //如果cookie不为空,hello:cookie的
  if(cookies!=null){
    for(Cookie cookie:cookies){
     if("name".equals(cookie.getName())){
     
      name =cookie.getValue();
    continue;
     }
     if("password".equals(cookie.getName())){
      password = cookie.getValue();
     
     }
    
    }
  
  }
   if(name!=null&& password!=null){
    out.print("hello"+name+",password:"+password);
   
   }
   else{
    request.setAttribute("info","请输入用户名在登陆");
    request.getRequestDispatcher("jksaf.jsp").forward(request,response);
   
   }
 
 
1.cookie机制

cookie机制采用的是在客户端保持 HTTP 状态信息的方案
Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一个小文本文件。
一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时,都会在HTTP请求头中将这个Cookie回传给WEB服务器。
底层的实现原理: WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP请求消息中增加Cookie请求头字段将Cookie回传给WEB服务器。
一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

2.Servlet程序中使用Cookie
Servlet API中提供了一个javax.servlet.http.Cookie类来封装Cookie信息,它包含有生成Cookie信息和提取Cookie信息的各个属性的方法。
Cookie类的方法:
构造方法: public Cookie(String name,String value)
getName方法
setValue与getValue方法
setMaxAge与getMaxAge方法
setPath与getPath方法
HttpServletResponse接口中定义了一个addCookie方法,它用于在发送给浏览器的HTTP响应消息中增加一个Set-Cookie响应头字段。
HttpServletRequest接口中定义了一个getCookies方法,它用于从HTTP请求消息的Cookie请求头字段中读取所有的Cookie项。

3.cookie的发送

1.创建Cookie对象
2.设置最大时效
3.将Cookie放入到HTTP响应报头
如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie; 存储在浏览器的内存中,用户退出浏览器之后被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。
发送cookie需要使用HttpServletResponse的addCookie方法,将cookie插入到一个 Set-Cookie HTTP响应报头中。由于这个方法并不修改任何之前指定的Set-Cookie报头,而是创建新的报头,因此将这个方法称为是addCookie,而非setCookie。


4.会话cookie和持久cookie的区别

如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。

5.cookie的读取

1.调用request.getCookies
   要获取浏览器发送来的cookie,需要调用HttpServletRequest的getCookies方法,这个调用返回Cookie对象的数组,对应由HTTP请求中Cookie报头输入的值。
2.对数组进行循环,调用每个cookie的getName方法,直到找到感兴趣的cookie为止



6.跟踪用户上次访问站点的时间

功能:
帮助网站实现提示客户端计算机上次访问网站的时间
实现原理:
将每一个会话作为一次访问过程,将每次会话的开始时间作为每次访问网站的时间,然后将这个时间以Cookie的形式存储到客户端的计算机中,客户端进行下次访问时通过该Cookie回传上次访问站点的时间值。
为了让Cookie信息在客户端浏览器或计算机关闭后仍然保持存在,Cookie的保存时间被设置为了一年。

cookie小练习:这样使用cookie

实现登陆页面:
首先登陆:login.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${requestScope.info}
<form action="hello.jsp" method="post"">
  name: <input type="text" name="name" />
  password: <input type="password" name="pwd" />
  <input type="submit" value="Submit" />
</form>
</body>
</html>

cookie的机制:hello.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<% //1.获取name的值
String name =request.getParameter("name");
String password =request.getParameter("password");
//2.如果name不为空,说明是页面请求过来的,Hello:name的值,同时更新cookie的信息:新建一个cookie。并设置最大实效,返回客户

if(name!=null){
  out.print("hello"+name);
  Cookie cookie = new Cookie("name",name);
  cookie.setMaxAge(30);
  response.addCookie(cookie);
 
}

if(password!=null){
 
  out.print("passwor"+password);
  Cookie cookie_ =new Cookie("password",password);
  cookie_.setMaxAge(30);
  response.addCookie(cookie_);
 
}
//3. 如果name为空,说明直接访问该页面
else{
  Cookie[] cookies =request.getCookies();
   //如果cookie不为空,hello:cookie的
  if(cookies!=null){
    for(Cookie cookie:cookies){
     if("name".equals(cookie.getName())){
     
      name =cookie.getValue();
    continue;
     }
     if("password".equals(cookie.getName())){
      password = cookie.getValue();
     
     }
    
    }
  
  }
   if(name!=null&& password!=null){
    out.print("hello"+name+",password:"+password);
   
   }
   else{
    request.setAttribute("info","请输入用户名在登陆");
    request.getRequestDispatcher("jksaf.jsp").forward(request,response);
   
   }
 
 
}




%>
</body>
</html>


使用cookie属性的注意问题


属性是从服务器发送到浏览器的报头的一部分;但它们不属于由浏览器返回给服务器的报头。 因此除了名称和值之外,cookie属性只适用于从服务器输出到客户端的cookie;服务器端来自于浏览器的cookie并没有设置这些属性。

}




%>
</body>
</html>


使用cookie属性的注意问题


属性是从服务器发送到浏览器的报头的一部分;但它们不属于由浏览器返回给服务器的报头。 因此除了名称和值之外,cookie属性只适用于从服务器输出到客户端的cookie;服务器端来自于浏览器的cookie并没有设置这些属性。
分享到:
评论

相关推荐

    Javaweb-session和cookie笔记

    ### Javaweb-session和cookie笔记 #### 一、会话技术概述 在Web开发中,会话技术是一项非常重要的技术,它可以帮助我们追踪用户的活动并维持用户的状态信息。会话技术主要包括两种方式:Cookie技术和Session技术。...

    Cookie笔记1

    【Cookie笔记1】 Cookie,源于英文"cookie",在计算机科学特别是网络编程中,它是一种用于维护客户端状态的技术。服务器通过向客户端发送Cookie,让浏览器在后续的HTTP请求中自动携带特定信息,从而实现服务器与...

    学习cookie的笔记和总结

    ### 学习cookie的笔记和总结 #### 一、什么是Cookie? Cookie是一种小型的数据文件,由服务器发送到用户的浏览器,并存储在用户计算机上的一种机制。它主要用于保存用户的偏好设置、登录状态等信息,以便用户再次...

    Cookie、Session学习笔记

    这篇学习笔记将深入探讨它们的工作原理、使用场景以及优缺点。 **Cookie** Cookie是一种在客户端(用户的浏览器)和服务器之间传递信息的技术。服务器在响应中设置Cookie,浏览器在后续的请求中携带Cookie返回。...

    Cookie&Session笔记.md

    Cookie&Session笔记.md

    PHPsession和cookie讲解笔记

    - 读取Cookie:使用`$_COOKIE`全局数组访问已设置的Cookie。 - 更新Cookie:再次调用`setcookie()`函数,设置新的值和过期时间。 - 删除Cookie:设置Cookie的过期时间为过去的时间点。 4. **示例代码** - 创建...

    Cookie_session笔记1

    Cookie 和 Session 是Web开发中两种重要的会话管理技术,它们主要用于维持客户端与服务器之间的状态。 首先,让我们深入了解Cookie。Cookie是服务器发送到用户浏览器并存储的一小块数据,用于跟踪用户的会话信息。...

    j2ee 笔记 j2ee 笔记 j2ee 笔记

    ### J2EE 笔记概览 #### 一、J2EE基础知识介绍 J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems为简化企业级应用开发而提出的一套技术标准,它提供了构建分布式系统的基础框架。在J2EE环境中,...

    黑马程序员_PHP_课程同步笔记day39:cookie介绍 .docx

    【PHP课程同步笔记day39:Cookie介绍】 在Web开发中,为了跟踪用户在整个会话中的行为,常常需要用到会话跟踪技术。常见的两种方法是Cookie和Session。Cookie是在客户端存储信息来标识用户身份,而Session则是在...

    14_尚硅谷_Cookie&Session_王振国 - 课堂笔记1

    - 除了创建、获取和修改值,还可以使用`setPath()`指定Cookie的作用路径,`setDomain()`指定Cookie作用的域名,`setHttpOnly()`防止JavaScript访问Cookie,以及`setSecure()`标志仅在HTTPS下发送Cookie。...

    PHP Cookie学习笔记

    Cookie是一种存储在用户计算机上的文本文件,由Web服务器创建,并可以被同一服务器的页面读取。它是一种网络技术,可以用来存储和跟踪访问者在网站上的活动。Cookie的主要功能可以概括为: 1. 记录用户信息:包括...

    HTTP协议、cookie、session超详细笔记整理,一篇就够了

    - **Cookie** 和 **Session** 机制为Web应用程序提供了会话管理的能力,使开发者能够构建更加复杂和个性化的应用。 通过深入理解HTTP协议及其关键组件,开发者可以更好地设计和优化网络应用,提升用户体验。

    C# cefsharp 多账号同时登陆,设置cookie隔离,修改部分浏览器指纹

    在IT领域,尤其是在Web开发和自动化测试中,模拟多个用户登录和管理Cookie是常见的需求。C#结合CEFSharp库提供了一种解决方案,使得开发者能够创建一个具有浏览器功能的应用程序,并且能够处理多账户同时登录的问题...

    PHP 中 Cookie 和 Session 的使用简易教程(学习笔记)

    与Cookie不同,Session是服务器端存储用户会话信息的一种技术,通常通过会话ID与客户端的Cookie关联,来识别和管理用户的会话信息。在实现原理上,Session提供了比Cookie更为安全的用户信息存储方式,因为它不会在...

    前端知识Cookie, Session,Token和JWT的发展及区别(一) 上章:主要介绍一下背景和Cookie

    【前端知识】Cookie, Session, Token和JWT是Web开发中用于管理用户状态和身份验证的重要概念。本篇文章主要探讨了Cookie的定义、特点、重要属性、优缺点、使用场景及其面临的问题。 1. 背景 Cookie的诞生源于HTTP...

    j2ee学习笔记-j2ee学习笔记

    **J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是一个由Sun Microsystems(现已被Oracle收购)开发的平台,主要用于构建企业级的分布式应用系统。它提供了服务器端组件模型、服务和API,支持...

    js 逆向学习笔记之阿里系cookie.docx

    ### JavaScript 逆向技术在阿里系Cookie解密中的应用 #### 一、JavaScript逆向概述 JavaScript逆向是指通过对前端JavaScript代码的分析与修改,来理解其内部逻辑或破解某些限制的过程。随着Web技术的发展,...

    js 逆向学习笔记之加速乐cookie加密.docx

    ### JavaScript逆向技术详解:加速乐Cookie加密案例分析 #### 一、背景介绍 随着互联网技术的不断发展,网站安全成为了不容忽视的重要问题。为了保护用户数据的安全性,很多网站采用了复杂的加密技术来防止数据被...

Global site tag (gtag.js) - Google Analytics