学习日常笔记<day11>cookie及session

1.会话管理

  1.1会话管理定义

  会话管理:管理浏览器客户端和服务端之间的会话过程中产生的会话数据

  域对象:实现资源之间的数据共享

      request 域对象

      context 域对象

  1.2.会话技术

      Cookie技术:会话数据保存在浏览器客户端中

      Session技术:会话数据保存在服务器端

2.Cookie技术

  2.1 特点

      Session技术:会话数据保存在服务器端

  2.2Cookie技术核心

      Cookie类:用于存储会话数据

        1)构造Cookie对象

          Cookie(java.lang.String name, java.lang.String value);

        2)设置Cookie

          void setPath(java.lang.String uri)   :设置cookie的有效访问路径

          void setMaxAge(int expiry) : 设置cookie的有效时间

          void setValue(java.lang.String newValue) :设置cookie的值

        3)发送cookie到浏览器端保存

          void response.addCookie(Cookie cookie)  : 发送cookie

        4)服务器接收cookie

          Cookie[] request.getCookies()  : 接收cookie

  2.3 Cookie原理        

      1)服务器创建cookie对象,把会话数据存储到cookie对象中。

         new Cookie("name","value");

      2) 服务器发送cookie信息到浏览器

         response.addCookie(cookie);

         举例: set-cookie: name=eric  (隐藏发送了一个set-cookie名称的响应头)

      3)浏览器得到服务器发送的cookie,然后保存在浏览器端。

      4)浏览器在下次访问服务器时,会带着cookie信息

        举例: cookie: name=eric  (隐藏带着一个叫cookie名称的请求头)

      5)服务器接收到浏览器带来的cookie信息

         request.getCookies();

  2.4 Cookie的细节      

      1)void setPath(java.lang.String uri)   :设置cookie的有效访问路径。有效路径指的是cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie信息,否则不带cookie信息。

      2)void setMaxAge(int expiry) : 设置cookie的有效时间。

        正整数:表示cookie数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间。

        负整数:表示cookie数据保存浏览器的内存中。浏览器关闭cookie就丢失了!!

        零:表示删除同名的cookie数据

      3)Cookie数据类型只能保存非中文字符串类型的。可以保存多个cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

3.Session技术

  3.1 引入      

      Cookie的局限:

        1)Cookie只能存字符串类型。不能保存对象

        2)只能存非中文。

        3)1个Cookie的容量不超过4KB。

        如果要保存非字符串,超过4kb内容,只能使用session技术!!!

      Session特点:

        会话数据保存在服务器端。(内存中)

  3.2 Session技术核心

      HttpSession类:用于保存会话数据

      1)创建或得到session对象

        HttpSession getSession()

        HttpSession getSession(boolean create)

      2)设置session对象

        void setMaxInactiveInterval(int interval)  : 设置session的有效时间

        void invalidate()     : 销毁session对象

        java.lang.String getId()  : 得到session编号

      3)保存会话数据到session对象

        void setAttribute(java.lang.String name, java.lang.Object value)  : 保存数据

        java.lang.Object getAttribute(java.lang.String name)  : 获取数据

        void removeAttribute(java.lang.String name) : 清除数据

  3.3 Session原理

      问题: 服务器能够识别不同的浏览者!!!

      现象:

      前提: 在哪个session域对象保存数据,就必须从哪个域对象取出!!!!

       浏览器1:(给s1分配一个唯一的标记:s001,把s001发送给浏览器)

          1)创建session对象,保存会话数据

       HttpSession session = request.getSession();   --保存会话数据 s1

       浏览器1 的新窗口(带着s001的标记到服务器查询,s001->s1,返回s1)

          1)得到session对象的会话数据

             HttpSession session = request.getSession();   --可以取出  s1

       新的浏览器1:(没有带s001,不能返回s1)

        1)得到session对象的会话数据

        HttpSession session = request.getSession();   --不可以取出  s2

       浏览器2:(没有带s001,不能返回s1)

        1)得到session对象的会话数据

        HttpSession session = request.getSession();  --不可以取出  s3

       代码解读:HttpSession session = request.getSession();

        1)第一次访问创建session对象,给session对象分配一个唯一的ID,叫JSESSIONID

          new HttpSession();

        2)把JSESSIONID作为Cookie的值发送给浏览器保存

          Cookie cookie = new Cookie("JSESSIONID", sessionID);

          response.addCookie(cookie);

        3)第二次访问的时候,浏览器带着JSESSIONID的cookie访问服务器

        4)服务器得到JSESSIONID,在服务器的内存中搜索是否存放对应编号的session对象。

          if(找到){

            return map.get(sessionID);

          }

          Map<String,HttpSession>

        5)如果找到对应编号的session对象,直接返回该对象

        6)如果找不到对应编号的session对象,创建新的session对象,继续走1的流程

        结论:通过JSESSION的cookie值在服务器找session对象!!!!!

  3.4 Sesson细节

      1)java.lang.String getId()  : 得到session编号

      2)两个getSession方法:

        getSession(true) / getSession()  : 创建或得到session对象。没有匹配的session编号,自动创 建新的session对象。

        getSession(false):              得到session对象。没有匹配的session编号,返回null

      3)void setMaxInactiveInterval(int interval)  : 设置session的有效时间

        session对象销毁时间:

        3.1 默认情况30分服务器自动回收

        3.2 修改session回收时间

        3.3 全局修改session有效时间

<!-- 修改session全局有效时间:分钟 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>

        3.4.手动销毁session对象

          void invalidate()     : 销毁session对象

      4)如何避免浏览器的JSESSIONID的cookie随着浏览器关闭而丢失的问题

手动发送一个硬盘保存的cookie给浏览器
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);

总结:

  1)会话管理: 浏览器和服务器会话过程中的产生的会话数据的管理。

  2)Cookie技术:

    new Cookie("name","value")

    response.addCookie(coookie)

    request.getCookies()

  3)Session技术

    request.getSession();

    setAttrbute("name","会话数据");

    getAttribute("会话数据")

时间: 2024-09-30 20:43:14

学习日常笔记<day11>cookie及session的相关文章

2014-07-09 Java Web的学习(5)-----会话管理(Cookie和Session)

1.什么是会话 会话,牛津词典对其的解释是进行某活动连续的一段时间.从不同的层面看待会话,它有着类似但不全然相同的含义.比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录.并完成购物直到关闭浏览器,这是一个会话.而在web应用的开发者开来,用户登录时我需要创建一个数据结构以存储用户的登录信息,这个结构也叫做会话.因此在谈论会话的时候要注意上下文环境.而本文谈论的是一种基于HTTP协议的用以增强web应用能力的机制或者说一种方案,它不是单指某种特定的动态页面技术,而这种能力就是保

express学习(三)—— cookie和session

express学习(三)-- cookie和session cookie存在浏览器中,最大只能保存4K数据,不安全 session存在服务器中,不能独立(先读取cookie再读取session),较安全 cookie 工具 发送cookie: 基本的东西先写好: const express = require('express'); var server=express(); // cookie server.use('/',function(req,res){ res.cookie('名字',

学习日常笔记&lt;day13&gt;jsp加强

1.jsp的内置对象(重点) 1.1什么是内置对象? 在jsp开发中,会频繁使用到一些现象 例如HttpSession,ServletContext,ServletContext,HttpServletRequet.如果我们每次要使用这些对象都去创建这些对象就显示非常麻烦.所以Sun公司设计Jsp时,在jsp页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可!,这些创建好的对象就叫内置对象. 举例: servlet: HttpSession session

学习日常笔记&lt;day12&gt;jsp基础

1.Jsp基础 1.1Jsp引入 Servlet的作用:用java语言开发动态资源的技术 Jsp的作用:用java语言(+html语言)开发动态资源的技术 jsp就是servlet 1.2Jsp的特点 1)jsp的运行必须交给tomcat服务器 tomcat的work目录:tomcat服务器存放jsp运行时的临时文件 2)jsp页面既可以写html代码,也可以写java代码 (html页面不能写java代码,而jsp页面可以写java代码) 1.3体验jsp页面作用 需求:显示当前时间到浏览器上

JSP笔记:cookie、session

JSP要点:1.为了解决Servlet编写HTML的麻烦. 2.是放在服务器中的,客户端请求JSP时候,服务器会先进行翻译(也就是说访问JSP是经过服务器的),然后将翻译过(类似于Servlet)的返回给客户端. JSP的标签 <%! %> :定义类.变量.方法,生成的是全局变量----不常用. <%= %> :输出语句 ; <%  %> :定义变量.语句,语句最终是以局部变量的形式或者在一个--jspserver方法内部的代码. 参考:ET表达式

学习日常笔记&lt;day15&gt;mysql基础

1.数据库入门 1.1数据库软件 数据库:俗称数据的仓库,方便管理数据的软件(或程序) 1.2市面上数据库软件 Oracle,甲骨文公司的产品. 当前最流行应用最广泛的数据库软件.和java语言兼容非常好. 适合中大型,中大应用. SQL Server: 是微软公司的产品.window平台应用非常广泛.和c#,net平台兼容非常好. DB2: IBM公司的产品.IBM服务器--> UNIX -> DB2- > Websphere MySQL: 开源组织的产品.甲骨文公司的产品.免费!!!

Javaweb学习笔记5—Cookie&amp;Session

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍  今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.会话管理技术概述 1 什么是会话? 这里的会话指的是web开发中的一次通话过程,当打开浏览

会话控制:cookie和session基础学习笔记

在多次HTTP连接间维护用户与同一用户发出的不同请求之间关联的情况称为维护一个会话(session) 我们可以简单理解为浏览器的开关. 其实对cookie和session也是主要为curd操作 cookie cookie 之前以字符串的形式保存在客户端 *.txt的格式.google等浏览器现在已经改为二进制存储,相对安全些,HTTP协议是无状态协议,cookie是服务器留在用户计算中的小文件,用来识别用户. 创建cookie setcookie() 函数用于设置cookie. setcooki

超全面的JavaWeb笔记day11&lt;JSP&amp;Session&amp;Cookie&amp;HttpSession&gt;

1.JSP 2.回话跟踪技术 3.Cookie 4.HttpSession JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. 1.2 JSP的组成 JSP = html + Java脚本(代码片段) + JSP动态标签 2 JSP语法 2.1 JSP脚本 JSP脚本就是Java代码片段,它分为三种: l <%...%>:Java语句: l <%=-%>