IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> cookie&session -> 正文阅读

[Java知识库]cookie&session

会话的概念

用户打开浏览器,浏览不同的网页(资源),发出多个请求,直到关闭浏览器的过程,称为一次会话(多次请求). 如同打电话.

我们在会话的过程(多次请求)之中,用户可能会产生一些数据,这些数据话有的需要保存起来的,我们就可以通过会话技术保存用户各自的数据

为什么要使用会话技术

保存一次通话过程中的数据!

会话技术中数据的保存方式:

浏览器存储会话数据:cookie

服务器存储会话数据:session

cookie(记住用户名密码)

==cookie是客户端(浏览器)的技术==,用户浏览的信息以键值对(key=value)的形式保存在浏览器上。如果没有关闭浏览器,再次访问服务器,会把cookie带到服务端,服务端就可以做响应的处理。

3.3.2session(记住登录用户名 购物车)

==session是服务器端的技术。==服务器为每一个浏览器开辟一块内存空间,即session。由于内存空间是每一个浏览器独享的,所有用户在访问的时候,可以把信息保存在session对象中。同时,每一个session对象都对应一个sessionId,服务器把sessionId写到cookie中,再次访问的时候,浏览器会把cookie(sessionId)带过来,找到对应的session对象。

  1. 会话概念

    1. 会话就相当于一次通话,表示从浏览器和服务器的一次通话过程【多次请求和响应】

    2. 会话建立:打开浏览器第一次请求服务器

    3. 会话结束:直到浏览器和服务器有一方关闭

  2. 为什么要使用会话技术?

    1. 要保持一次会话中的重要数据

    2. 客户端会话技术:cookie 表示将数据保存在浏览器

    3. 服务端会话技术:session 表示将数据保存在服务器

cookie:客户端的会话技术,保存数据在浏览器!

cookie:一个名称和一个值 一些可选属性 cookie存储的数据大小和个数都有限

cookie写入:response.addCookie() 将cookie从服务器 写入到浏览器

cookie获取:request.getCookies()

相关的API

  • 创建一个Cookie对象(cookie只能保存字符串数据。可以保存中文 但是要求tomcat版本8.5+)

new Cookie(String name,String value);

  • 把cookie写入浏览器

  • response.addCookie(cookie);?

  • 获得浏览器带过来的所有Cookie:

  • request.getCookies() ; //得到所有的cookie对象。是一个数组,开发中根据key得到目标cookie

  • cookie的 API

  • cookie.getName() ; //返回cookie中设置的name
    cookie.getValue(); //返回cookie中设置的value

  • @WebServlet("/cookie02")
    public class CookieServlet02 extends HttpServlet {
    ? ? @Override
    ? ? protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ? ? ? ? System.out.println("CookieServlet02...");

    ? ? ? ? //3.获取客户端请求携带的cookie数据
    ? ? ? ? Cookie[] cookies = request.getCookies();
    ? ? ? ? for (Cookie cookie : cookies) {
    ? ? ? ? ? ? System.out.println(cookie.getName()+" "+cookie.getValue());
    ? ? ? ? }
    ? ? }

    ? ? @Override
    ? ? protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ? ? ? ? doPost(request, response);
    ? ? }
    }

  1. cookie的特点

    1. cookie是一门客户端会话技术,保存数据在客户端浏览器

    2. cookie在第一次请求时没有,通过服务器以响应头的方式写给浏览器,在浏览器第二次发送 请求时,就会携带cookie到服务器

    3. cookie存储的字符串数据

    4. cookie存储的大小以及个数有限

    5. cookie存储数据不安全 因此cookie会存储一些私人数据或不重要的数据

  2. cookie使用的API

    1. 创建Cookie对象:Cookie cookie = new Cookie(String name,String value);

    2. cookie写入:response.addCookie(cookie);

    3. cookie获取:Cookie[] cookies = request.getCookies();

    4. 获取cookie名称:cookie.getName();

    5. 获取cookie值:cookie.getValue();

  1. Cookie的有效时长:cookie.setMaxAge(int seconds)

    1. -1:默认值,表示会话级别 浏览器一关闭则cookie删除

    2. 0:删除cookie

    3. 正整数:表示cookie的有效时间 单位是秒

  2. cookie的有效路径:cookie.setPath(String path);

    1. 不同路径下的cookie名称可以一样

    2. cookie默认路径是当前Servlet所在资源路径

    3. cookie有效路径一般设置为当前项目的虚拟路径:setPath(request.getContextPath());

    4. cookie存储设置路径,在其路径同级目录和子目录下都可以访问到该cookie

  3. cookie存储中文及特殊字符

    1. tomcat已经解决了cookie中文存储,但是仍然不能存储特殊字符,比如空格...

    2. 存储时编码:URLEncoder.encode(value,"UTF-8");

    3. 获取时解码:URLDecoder.decode(value,"UTF-8");

  4. cookie可以一次存储多个

Session

session是服务器端的会话技术,用于保存数据在请求间实现数据共享。

session是服务器端的会话技术。服务器为每一个浏览器开辟一块内存空间,即session对象。由于session对象是每一个浏览器特有的,所以用户的记录可以存放在session对象中。同时,每一个session对象都对应一个sessionId,服务器把sessionId写到cookie中,再次访问的时候,浏览器把sessionId带过来,找到对应的session对象

3.2cookie和Session的不同

  • Session将数据保存在服务器端,cookie将数据保存在客户端浏览器

  • session一般保存比较重要的数据,cookie保存的相对不重要比较私人的数据

  • session存储的是对象Object,cookie存储的是字符串数据

  • session在数据的存储上没有限制,cookie存储数据量大小以及个数都有限制

  • session是基于cookie实现的

3.3Session的执行原理

1、获得cookie中传递过来的SessionId(cookie)(浏览器请求服务器会将该项目路径下的cookie带过去)

2、如果Cookie中没有sessionid,则创建session对象(第一次调用request.getSession()创建Session对象

3、如果Cookie中有sessionid,找指定的session对象

如果有sessionid并且session对象存在,则直接使用

如果有sessionid,但session对象销毁了,则执行第二步

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 12:51:50  更:2021-10-29 12:54:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:07:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码