Cookie与session的机制

Cookie与session的机制

1.会话的解释

什么是会话?
具体点说就是有A,B两个用户,都在超市购买商品,但是A商品只能将商品放入A的购物车,A与B就是两个会话,但是由于HTTP的协议的特点是无状态的协议,一旦数据交换完毕之后就会将服务端与客户端之间的联系断开,就是说如果A购买完一件商品放入自己的购物车之后,再想去买一件商品的话,服务器就不知道这个购买的行为是谁来请求的,所以出现了一种机制,来跟踪这一次的会话,这种机制之一就是Cookie的机制

2.Cookie的介绍

2.1 Cookie的简单介绍

Cookie 其实就是一种会话跟踪的技术,它是用来在客户端来确定用户的身份的Cookie就是将多个请求之间的联系记录下来,并将请求记录在浏览器上,可以实现请求之间的属性的值(状态)共享。

2.2HTTP协议的特点

HTTP协议特点就是请求之间的状态是独立的,不会记录两个请求之间的状态,又可以称之为无状态
应用场景的举例:
用户的登录的操作

2.3创建一个Cookie

一般的格式为:
Cookie cookie=new Cookie(“名字”,“值”);
设置一个Cookie的寿命
cookie.setMaxage(时间(单位为秒));
通过响应的对象来将Cookie返回给浏览器
方法
response.addCookie();
浏览器每次请求时,会将这个域名进行检查,将这个域名下所有的Cookie全部发送给服务器
Cookie的不可跨域名性:每个浏览器会使用自己的Cookie而不能使用其他浏览器的Cookie

2.4获取一个请求的所有的Cookie

Cookie[]cookies=request.getCookies();

2.5中文乱码的问题

URLEncoder.encode(“汉字”, “utf-8”);//这是将汉字进行编码之后,再将其存入Cookie里面去
URLDecoder.decode(“编码后的内容”, “utf-8”); // 把编码后的内容进行解码

2.6 el表达式来获取Cookie的值

一般的格式为
${cookie.cookie的名称.value}

2.7 Cookie的限制

一个浏览器的域名之下一般可以存入30~50个Cookie
每一个Cookie的大小为4k左右
注意Cookie是存储在浏览器中的,一般重要的信息是不会存储在Cookie中的

3.session的机制

3.1session的概述

session机制的是服务器端的来记录客户端状态的一种的机制,相应的也会增加了服务器端的压力
session机制,是将客户端的状态信息以某种形式存储在服务器端口,只要客户端再次访问的时候,就会在session中获取

3.2session的创建

创建session的一般的格式
HttpSession session=req.getSession();//第一次使用的时候,是先创建一个Session,后续调用的时候只会使用先创建好Session
session.setAttribute(“变量名”,“信息”);//将信息放入session的对象之中
获取session的内容
Object 变量session.getAttribute(“变量名”);
删除一个Session的内容
Object 信息session.removeAtrribute(“变量名”);
让session的对象全部消失
session.invalidate();
典型的应用就是
用户的注册和安全退出

3.3 jsp网页session的获取

${sessionScope.变量名}

3.4session的实现的原理

session的对应的是同一个浏览器
每个客户端访问服务器的时候,服务器会产生为它们创建一个独立的session
session实现的原理
(1)第一次创建session的时候,会产生一个名字JSESSIONID=session的唯一标识特殊的Cookie
这个JSESSIONID=1就会随着响应返回给浏览器
(2)之后的每次浏览器的访问都会将Cookie发送给服务器,服务器会根据这个Cookie找到对应的session
(3)jsessionid 这个cookie属于会话cookie,浏览器关闭就会消失

3.5session与Cookie的区别

(1)存储的位置的不同 session是将信息存储于服务器端,Cookie是将信息存储于浏览器端
(2)session与Cookie相比更加的安全
(3)存活的时间不同
session如果长时间不用的话就会被服务器销毁
Cookie只会在浏览器关闭或者是设置的寿命到期的话才会销毁
(4)存储信息的大小不同
Cookie存储的信息大小为4K左右
session的大小理论上是没有限制的但是session的位置是在服务器中的,所以还是不宜存储过多的信息
(5)Cookie存储的信息为字符串,但是session可以存储的信息为任意类型

重定向的请求

区别:
1) 请求转发时,地址栏不会改变(是第一个servlet的地址)
重定向,地址栏会发生变化(是最后一个servlet的地址)
2) 请求转发时一次请求,跳转发生在服务器内部
重定向是两次请求,第一次请求会返回302的状态码和目标地址,
浏览器根据目标地址发送第二次请求,才完成整个流程
3) 重定向是两次请求,所以不能利用request作用域存值取值
但可以使用session作用域来存值取值
请求转发因为是同一次请求,所以可以使用request作用域存值取值
4) 请求转发的目标只能是本项目的servlet或jsp
重定向跳转的目标可以是任意的

查询
servlet --> jsp // 关系密切的跳转使用请求转发 forward()
删除
删除servlet --> 查询列表servlet // 关系不密切的跳转使用重定向 redirect()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值