Day37 Cookie&Seesion会话

1.1.1 什么是cookie

当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,这些信息都保存在Cookie中。这样,当该浏览器再次访问服务器时,都会在请求头中将Cookie发送给服务器,方便服务器对浏览器做出正确的响应。

1.1.2  

1.1.3  

1.1.4  

1.1.5 会话技术

l 概念:

用户打开浏览器,点击多个超链接访问服务器的web资源,然后关闭浏览器,整个过程称之为一次会话.(打电话)

l 作用:

每个用户与服务器进行交互过程中,产生各自的数据,程序想要将这个数据进行保存,就需要使用会话技术.

一次会话中多次请求之间共享数据

1.1.6 Cookie执行原理(工作流程):

浏览器访问服务器,服务器产生键值对的形式(cookie),通过响应(响应头 set-cookie)返回给浏览器,cookie保存在浏览器上,下次访问的服务器时候,根据一定的规则携带不同的cookie,通过请求(请求头 cookie)携带,服务器就可以拿到这些cookie

l Cookie和缓存的区别(了解).

n 缓存是浏览器自动进行处理的

n Cookie是服务器要求浏览器保存的数据

1.1.7 Cookie的API

方法名

描述

getName()

获得cookie名称。

getValue()

获得cookie的值。

setMaxAge(int expiry)

设置cookie的有效时间。

l 如果没有设置,cookie只缓存浏览器缓存中,浏览器关闭,cookie删除。

l 如果设置有效时间,在时间范围内,cookie被写入到浏览器端,关闭浏览器下次访问仍可获得,直到过期。

setPath(java.lang.String uri)

设置cookie允许被访问的路径。设置的路径,以及子路径都被允许访问。

l 例如:setPath("/web/a/b");

http://localhost:8080/web/a/b/oneServlet,可访问(当前路径)

http://localhost:8080/web/a/b/c/oneServlet,可访问(子路径)

http://localhost:8080/web/a/c/oneServlet,不允许访问(无关路径)

l 常见设置:setPath(“/”) ,当前tomcat下的所有的web项目都可以访问

1.1.7.1 Session概念

Session是服务器端会话技术

提供一种方式,跨多个页面请求或对 Web 站点的多次访问标识用户并存储有关该用户的信息(一个会话多次请求之间共享数据)

一次会话中,如果需要数据保存到服务器端.创建一个Session对象用来保存数据.(一次会话对应一个Session对象)

1.1.7.2 Session执行原理

l 生命周期(了解)

Session对象创建到销毁的过程

n 创建

u 创建时间:第一次调用request.getSession();

u 创建者:tomcat服务器

n 销毁

u 超时

默认Session的有效时间为30分钟.当浏览器关闭时,会话级别的cookie就自动销毁了,无法获得sessionid,就不能获得服务器端的Session对象,但服务器端的Session依然存在.

Tomcat/conf/web.xml

<session-config>

<session-timeout>30</session-timeout>

</session-config>

u 服务器非正常关闭

u 手动调用方法

session.invalidate();   实际开发中不用

l Session的API

n 保存数据

u setAttribute(String name,Object obj)

n 获得数据

u getAttribute(String name);

n 删除数据

u removeAttribute(String name)

1.1 小结:Cookie和Session的选取

* Cookie是有大小和个数的限制的.Session存到服务器端的技术,没有大小和个数的限制.

Cookie常用于:登录”记住我”, ”浏览记录”

* Cookie相对于Session来讲不安全.

Session常用于: 用户登录

数据安全的信息保存Session,不安全的保存到Cookie

1.2 Servlet三个作用域

l ServletContext针对一个WEB项目

n 创建:服务器启动时,为每一个项目创建一个

n 销毁:服务器关闭或者项目被移除时

n 作用域:整个web项目共享,数据永久共享.

l HttpSession针对一个会话,一个会话多次请求之间共享数据

n 创建:第一次使用getSession()

n 销毁

u 超时

u 手动关闭

u 服务器非正常关闭

n 作用域: 一次会话中共享数据(多次请求多次响应中,多个servlet之间共享数据)

l HttpServletRequest针对一次请求

n 创建:客户端向服务器端发送请求.使用该对象保存数据,一次请求中数据有效

n 销毁:服务器开始响应时

n 作用域:一次请求中多个servlet之间共享数据,用于请求转发

l 3个作用范围?

servletConetext   >    Session  >  Request

实际开发中原则: 能小不大

l 通用API

n 保存数据

u setAttribute(String name,Object obj)

n 获得数据

u getAttribute(String name);

n 删除数据

u removeAttribute(String name)

Session会话机制:

Session基于Cookie的工作流程:

(1)当用户通过浏览器进程第一次请求一个支持会话的资源时,Servlet容器会为这个会话创建一个HttpSession对象,并为其分配一个唯一的ID,当前会话就此开始。

(2)把这个唯一的ID以name为JSESSIONID的Cookie形式添加到响应中,返回给客户端保存。(当Cookie被禁用时,使用URL重写机制,在URL后添加;jsessionid=XXX以传输HttpSession对象标识)

(3)当浏览器进程再次请求这个支持会话的资源时,会在请求头中加上一直保持着的JSESSIONID,Servlet容器会在HTTP请求头中自动查找这个Cookie(也可以通过HttpSession.getId()方法主动获取),如果找到,就取出对应HttpSession对象(其实用户第一次访问,也会进行相同的查询,因为查询不到,才会执行创建操作)。

Cookie&Seesion会话 共享数据 工作流程 持久化 Servlet三个作用域 会话机制的更多相关文章

  1. python大数据工作流程

    本文作者:hhh5460 大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + p ...

  2. 多租户实现之基于Mybatis,Mycat的共享数据库,共享数据架构

    前言 SaaS模式是什么? 传统的软件模式是在开发出软件产品后,需要去客户现场进行实施,通常部署在局域网,这样开发.部署及维护的成本都是比较高的. 现在随着云服务技术的蓬勃发展,就出现了SaaS模式. ...

  3. [Servlet]Servlet工作流程及注意事项

    Servlet工作过程 采用Servlet完成Web实际的工作流应用程序是通过Tomcatserver公布服务,client与server遵循的端部之间的相互作用Http议完毕的. 详细工作流程例如以 ...

  4. git详情、git工作流程、常用命令、忽略文件、分支操作、gitee远程仓库使用

    今日内容概要 git详情 git工作流程 git常用命令 过滤文件 分支操作 git远程仓库使用 可参照:https://www.cnblogs.com/liuqingzheng/p/15328319 ...

  5. 03.AOF持久化机制配置与工作流程

    一.AOF持久化的配置 配置文件redis.conf,AOF持久化默认是关闭的,默认是打开RDB持久化 appendonly yes     二.工作流程: 打开AOF持久化机制之后,redis每次接 ...

  6. 02.RDB持久化配置与工作流程

    一.如何配置RDB持久化机制 配置文件redis.conf save 60 1000 表示每隔60s,检查如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redi ...

  7. openVswitch(OVS)源代码分析之工作流程(数据包处理)

    上篇分析到数据包的收发,这篇开始着手分析数据包的处理问题.在openVswitch中数据包的处理是其核心技术,该技术分为三部分来实现:第一.根据skb数据包提取相关信息封装成key值:第二.根据提取到 ...

  8. 如果说需要注册数据中心,这样才能使用demo部署数据中心license证需要申请,使用云之间-工作流程......

    如果说需要注册数据中心,这样才能使用demo部署数据中心license证需要申请,使用云之间-工作流程......

  9. 在这个应用中,我使用了 MQ 来处理异步流程、Redis 缓存热点数据、MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ、MySQL 持久化的数据也会存在于一个分布式文件系统中,他们之间的调用也是需要用 RPC 来完成数据交互的。

    在这个应用中,我使用了 MQ 来处理异步流程.Redis 缓存热点数据.MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ.MySQ ...

随机推荐

  1. IDE-Android Studio -FAQ-使用习惯(不断更新 欢迎留言)

    摘要: 从ecplise工具切换到android studio后遇到了很多问题,起初亦非常痛苦,城墙内外阅博无数才得以解决.所以把当时遇到的问题记录下来,方便后来人学习. 另如果有遇到未纪录的问题欢迎 ...

  2. 您的 Java 代码安全吗 — 还是暴露在外? 【转】

    在开发 Java Web 应用程序时,您需要确保应用程序拥有完善的安全性特征补充.这里在谈到 Java 安全性时,我们并不谈及 Java 语言提供的安全性 API,也不涉及使用 Java 代码来保护应 ...

  3. 详解Ajax请求(四)——多个异步请求的执行顺序

    首先提出一个问题:点击页面上一个按钮发送两个ajax请求,其中一个请求会不会等待另一个请求执行完毕之后再执行? 答案是:不会,这两个异步请求会同时发送,至于执行的快与慢,要看响应的数据量的大小及后台逻 ...

  4. 解决cors跨域的filter

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.Ordered; im ...

  5. Python入门之函数的介绍/定义/定义类型/函数调用/Return

    本篇目录: 一. 函数的介绍 二. 函数的定义 三. 定义函数的三种类型 四. 函数调用的阶段 五. Return返回值 ======================================= ...

  6. web框架之Flask

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...

  7. 学习css之选择器优先级

    相信每一位前端工作者最开始迷惑的地方便是界面展示为什么不符合预期效果呢,下面我来介绍一下可能引起上面结果的原因之一--css优先级. 我这里采用对照法来得出结论,代码如下: <style> ...

  8. sqlserver数据库导入Mysql数据库问题

    近来遇到一个问题,之前的项目用的是SQLServer数据库,但是现在要换成MySQL数据库,所有整理了一些数据导入的步骤,供需要的人参考! 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: ...

  9. 发布你的程序包到Nuget

    1.新建一个.NET Standard 的类库项目 2.选择项目熟悉,在 package 栏目下填写我们的nuget包信息 3.选择我们的项目,点击"Pack" 打包 主要注意的是 ...

  10. [LeetCode] Employee Importance 员工重要度

    You are given a data structure of employee information, which includes the employee's unique id, his ...