会话、cookie、session

什么是会话?

会话是浏览器和服务器之间的多次请求和响应

为了实现某个功能,浏览器和服务器之间可能会产生多次的请求和响应,从浏览器访问服务器开始,到访问服务器结束,浏览器关闭为止,这期间产生的多次请求和响应加在一起就称为浏览器和服务器的一次会话

会话数据存储在哪?

cookie存在浏览器端

session存在服务器端

cookie

cookie就像是浏览器和服务器传递的一张小纸条

cookie的产生过程:

服务器端:创建cookie并写给浏览器

浏览器端:存储cookie

浏览器端:请求服务器并向服务器传递cookie

服务器端:解析cookie,获取cookie中的数据

服务器关闭不会销毁cokie

浏览器关闭会销毁cookie(cookie默认存储在浏览器中)

cookie随着浏览器的关闭而销毁,新打开一个浏览器是没有之前的cookie的

 

cookie使用注意:

cookie存储数据是有限的,一般不超过4kb

一个网站的cookie也是有限的大约20到30个

一个浏览器上的cookie数量大约200到300个

cookie的应用场景:

1、浏览的历史记录(将商品的id存在cookie中)

2、七天自动登录(将用户名和密码存储在cookie中)

cookie的种类

会话级别的cookie:cookie存储在浏览器内存中,随着浏览器的关闭而销毁

持久化级别的cookie:设置cookie的生存时间,cookie存在浏览器指定的硬盘空间中,只有时间没到期,cookie就会一直存在

设置cookie的生存时间:setMaxAge(int expiry)单位是秒

取值:

负数:会话级别的cookie

0:立即过期

正数:存活的时间

七天自动登录:setMaxAge(60x60x24x7);

cookie的有效路径:浏览器将cookie保存在硬盘的路径,是各个浏览器自己制定,其他程序无法进行指定

有效路径:浏览器请求时,cookie的代入路径

请求路径:等于或者包含cookie的有效路径,该cookie会在请求时被代入

请求路径是从资源位置开始进行判断

设置有效路径。设置cookie允许被访问的路径。setPath(java.lang.String uri)

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

cookie1.setPath("/day15/aa"); uname

cookie2.setPath("/day15/aa/bb"); pwd

cookie3.setPath("/day15"); sex

访问路径1:http://localhost:8080/day15/

携带一个cookie:sex

访问路径2:http://localhost:8080/day15/qqq

携带一个cookie:sex

访问路径3:http://localhost:8080/day15/aa/www

携带两个cookie:uname、sex

访问路径4:http://localhost:8080/day15/aa/bb/www

携带三个cookie:uname\pwd sex

访问路径5:http://localhost:8080/day16

携带0个

不设置有效路径时:

是否默认是setPath("/day15")? 非也

如果Sevlet设置了该路径:@WebServlet("/www/cookie3")

只有访问/www目录下的路径才会携带cookie

需求:访问该项目下的所有资源都携带该cookie

手动设置:cookie.setPath(/项目名)

Session 域对象

会话技术存在服务器端的技术

Session和cookie的区别:

              cookie:存在浏览器端,存储数据量小,安全性低

              Session:存在服务器端,存储数据量大,安全性高

request.getSession();//获取到Session对象(从当前request中获取session,如果获取不到session,则会自动创建一个session,并返回新创建的session;如果获取到,则返回获取到的session; )

当第一次执行getSession(),会在响应头生成一个名字为JSESSIONID的一个cookie

当第二次以及以后执行getSession(),此时不再在响应头上生成JSESSION的cookie

第二次以及以后的请求,会以请求头的形式将JSESSIONID携带过去

session存储在服务器,在浏览器的只是JSESSION的cookie(实际上是session的id),这个用来会话请求时把这个session的id传递给服务器,服务器根据id查找session

新打开一个浏览器,就是开启一个新会话,服务器端会创建新的session对象,再把新的session对象的id响应给浏览器,之前的session对象还在服务器端,只是没有传递相应的session的id

浏览器关闭,会话结束。JSESSIONID销毁(会话级别的cookie)

session的生命周期

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

销毁:

         非正常关闭服务器时销毁session

         正常关闭,会将session序列化到指定的硬盘空间中C:\java\apache-tomcat-8.5.29\work\Catalina\localhost\day15再次启动时反序列化到服务器中

         手动调用invalidate() 可以销毁session

          不操作session,30分钟后自动销毁tomcat/conf/web.xml

<session-config>
  <session-timeout>30</session-timeout>
  单位:分钟
</session-config>

session的常用方法:invalidate()、setAttribute、getAttribute、removeAttribute

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值