会话技术Cookie、Session的介绍及Servlet域对象总结

会话技术的概述

  • 用户打开一个浏览器,点击多个超链接访问服务器的web资源,然后关闭浏览器,整个过程成为一次会话。
  • 每个用户和服务器进行交互过程中,产生一些各自的数据,程序想要把这些数据进行保存,就需要使用会话技术。

在这里插入图片描述

会话跟踪实现方式

  • 常用的会话跟踪技术有四种
    • URL方式(get):需要保存的信息直接追加到URL后
      • 例如:http://127.0.0.1:8080/chapter03/viewList?pageNo=12
    • 隐藏域方式(post):可以使用表单中的隐藏域保存相关信息
      • 例如:<input type=“hidden” name=“status" value=“true">
    • Session方式:将状态信息保存到服务器的会话对象中,通过唯一标记的ID值与客户端进行绑定使用
      • 例如访问控制功能就可以使用Session实现
    • Cookie方式:将状态信息保存到客户端,服务器能够获得相关信息进行分析,从而生成对客户端的响应
      • 例如简化登录功能就可以使用Cookie实现

会话技术的实现原理

  • cookie:cookie是客户端技术,程序把每个用户的数据以cookie的形式存到各自的浏览器中。当用户使用浏览器再次访问服务器中的web资源的时候,就会带着各自的数据过去。这样,web资源处理的就是用户各自的数据了。
    在这里插入图片描述
  • session:session是服务器端技术,利用这个技术,服务器在运行的时候为每一个用户创建一个独享的session对象。由于session为用户浏览器独享,所有用户在访问服务器的时候,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源时,其他web资源再从用户各自的session中取出数据为用户服务。
    在这里插入图片描述

Cookie分类

  • 默认级别的Cookie
    指没有设置有效时间的Cookie,默认的情况下只要关闭了浏览器,Cookie也会被销毁。(Cookie存在于浏览器的内存中,当关闭了浏览器Cookie就销毁了。)

  • 持久级别的Cookie
    指有有效时间的Cookie,这种Cookie的内容不是保存在浏览器的内存中,而是保存在本地硬盘上。

  • Cookie的使用细节

    • 一个cookie只用标识一种信息,至少含有一个标识该信息的名称和值;
    • 一个web站点可以给一个浏览器发送多个Cookie,一个浏览器可以存储多个web站点的Cookie;
    • 浏览器存放的cookie的大小和个数是有限制的;
    • 默认被创建的cookie是会话级别的,关闭浏览器则摧毁;
    • 需要手动删除持久性的Cookie,可以将有效时长改为0,注意:path需一致,否则无法删除。

Cookie主要属性

  • name:cookie的名字,每个cookie都有一个名字;
  • content:cookie的值,与名字一起作为键值对形式存在;
  • domain:域,该cookie的域名,例如csdn.net,说明当前cookie来自csdn.net;
  • path:路径,访问csdn.net下该路径时,当前cookie将被发送;
  • created:cookie被创建的时间;
  • Expired:cookie失效的时间;
  • MaxAge:失效时间和创建时间的时间差,就是cookie的最大生命时间,超过该时间,cookie将失效,不再被发送到相应的域地址;

Cookie操作(java部分)

  • 写cookie
//创建/修改cookie对象,键值对形式
Cookie cookie = new Cookie("username", "admin");
//设置过期时间 单位秒,删除Cookie只需要修改过期时间为负数
cookie.setMaxAge(60*60);
//cookie还可以设置path等信息
//cookie对象存入response,响应给浏览器,浏览器接受到响应数据时才会把cookie存储在本地
response.addCookie(cookie);
  • 读cookie
//从request对象中取值
Cookie[] cookies = request.getCookies();
//循环输出值
for(Cookie cookie : cookies){
	//键:  cookie.getName()
	//值: cookie.getValue()
	// cookie的其他属性path等,控制台读取不到。
}
  • 删除cookie
    • 设置最大有效时间为0,删除;设置最大有效时间为负数,cookie的有效期为session。

Cookie操作(js部分)

  • Cookie写
document.cookie="jscook=jsval1;path=/;expires="+new Date("2021-11-11 11:11:11");
  • Cookie读
var cookie =  document.cookie 
//读到键值对格式的字符串 如果需要找到特定key的value需要手动解析
var mycks = document.cookie.split(";");
		$.each(mycks,function(i,d){
			var kvarr = d.split("= ");
			console.log("key是:"+ kvarr[0]+" value是:"+kvarr[1]);
		})
  • 删除cookie
// 设置时间为上一秒
document.cookie="jskey=jsval;expires="+new Date(now.getTime()-1000).toGMTString();
// 设置为一个过去的时间
document.cookie="jskey=jsval;expires="+new Date("1969-11-11 11:11:11");

注意:cookie在使用时,相同domain,不同path下可以存储同名cookie,为了让cookie设置统一,和解决cookie读取权限问题,经常会把cookie的path直接设置到根/

Web storage使用

  • HTML5 提供了两种在客户端存储数据的新方法 统称Web storage:
    • localStorage - 没有时间限制的数据存储
    • sessionStorage - 针对一个 session 的数据存储,数据在浏览器关闭后自动删除
  • Web storage是一种设计由前端存储数据的技术,跟cookie有相似之处,但是因为设计给前端使用,所以操作上比cookie方便很多
    在这里插入图片描述
  • Web storage操作
localStorage.setItem("user", "user_name");//设置值
console.log(localStorage.getItem("user"));//取值

localStorage.username = "admin";//设置值
console.log(localStorage.username)//取值
//以上两种方式存值/取值都可以
localStorage.removeItem("user");//移除指定的key
localStorage.clear();//清空所有的数据

注意:sessionStorage用法同localStorage;
Web storage是前端的技术,跟服务端的session对象无直接关系;
Web storage没有默认随请求发送到服务器的机制,传值使用链接拼接或者隐藏框。

Session概述

  • Session与cookie的区别
    • Session没有个数和大小的限制

    • 数据是保存在服务器上的(相对安全)

  • Session如何保存用户数据
    Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到Session对象。
    在这里插入图片描述
  • Session的实现原理
    是基于Cookie的,基与Cookie回写了一个Session的id。
    在这里插入图片描述
  • Session做为域对象存取数据
    • 存入:SetAttribute
    • 取出:GetAttribute
    • 移除:RemoveAttribute
    • 作用范围:一次会话。指的是用户打开浏览器访问服务器资源,到最后关闭浏览器的过程。

Servlet的数据访问范围的总结

  • Servlet域对象的总结
    • 请求范围(ServletRequest)
      • 何时创建和销毁的:请求创建,响应销毁。
      • 如何存取数据:传值类型为object。
      • 作用范围:一次请求。
    • 会话范围(HttpSession)
      • 何时创建和销毁的:服务器端第一次调用getSession()方法即创建。销毁:①Session过期,默认过期时间为30分钟;②非正常关闭服务器;③手动调用session.invalidate()。
      • 如何存取数据:传值类型为object。
      • 作用范围:一次会话。
    • 应用范围(ServletContext)
      • 何时创建和销毁的:服务器启动时创建,为每个web项目创建一个单独的ServletContext对象。销毁:服务器关闭时,或者项目从服务器中移除。
      • 如何存取数据:传值类型为object。
      • 作用范围:整个web项目。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值