Servlet(2)——Cookie与Session

Session

Session是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过相应发送到浏览器。当浏览器第二次发送请求时,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session

一般情况下,服务器会在一定时间内(默认为30分钟)保存这个Session,过了时间限制,就会销毁这个Session。在销毁之前,程序员可以将用户的一些数据以Key和Value的形式暂时存放在这个Session中。当然,也有使用数据库将这个Session序列化后保存起来的,这样的好处是没了时间限制,坏处是随着时间的增加,这个数据库会急速膨胀,特别是访问量增加的时候。一般还是采取前一种方式,以减轻服务器压力。

Cookie

Cookie中文译文是饼干的意思,cookie是保存会话数据的一种技术,其容量有限;有生命周期,根据需求设置cookie的有效期,如果不进行设置的话,数据保存至浏览器关闭。它保存在浏览器的缓存中,数据是明文显示的通常只保存非敏感信息,未加密的数据会充分暴露给外界。Cookie通常是保存用户偏好设置、用户名、日期时间等数据

Cookie从何而来?

  1. 浏览器向服务器发送请求
  2. 服务器接收请求,生成一个cookie对象保存“标识”数据
  3. 然后把cookie对象放在响应头,一并发回浏览器
  4. 浏览器取出cookie对象的数据保存在浏览器的缓冲中
  5. 再次访问时请求头携带cookie数据发送到服务器
  6. 服务器根据cookie的数据做出相应的处理

注意:cookie的声明周期可以通过cookie.setMaxAge()方法设置的

Cookie的应用场景

  • 判断用户是否登录过网站,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须重新填写登录信息
  • 另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入Cookie,在最后付款时从cookie中提取这些信息。这里会遇到安全和性能的问题需要我们进一步去处理。

Session与Cookie区别与联系

Cookie是属于Session对象的一种。但有不同,Cookie不会占用服务器资源,是存在客户端内存挥着一个cookie的文本文件中;而“session”则会占用服务器资源。我们一般认为cookie是不可靠的,session是可靠的,但是目前很多著名的站点都是依赖cookie。有时候为了解决禁用cookie后的页面处理,通常采用url重写技术,调用session中大量有用的方法从session中获取数据后置入页面。

  • Session存在与服务端对客户不可见,而Cookie存在客户端。SessionId要依赖cookie进行转发。
  • 当第一次打开浏览器时,浏览器马上分配了一个sessionid给客户端,客户端发送请求给服务端时,服务端记录此sessionid在本地
  • 当客户端再次请求服务端时,它就是根据先前有效的sessionid做出相应的操作。每次客户端发来请求时,服务端根据cookie携带的sessionid来区分是哪个用户的会话。

Session实例

在这里插入图片描述

  • com.session包中的两个类:User类是用户信息类,ServletSession类是处理业务逻辑类
  • WebContent包下有两个页面:
  • index.jsp页面和login.jsp页面

User类

在这里插入图片描述

ServletSession类

在这里插入图片描述

login.jsp页面

在这里插入图片描述

index.jsp页面

在这里插入图片描述

写完上面的类后,部署程序,打开浏览器,输入http://localhost:8080/Servlet/index.jsp

表单未提交前,可见sessionId=【86E619570D3CDBE178DD087BB0A0E8BC】
在这里插入图片描述

表单提交成功后,跳转到index.jsp页面,页面的URL自动变为:http://localhost:8080/Servlet/ServletSession

在这里插入图片描述

Cookie实例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

web.xml配置文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

参考并感谢

[1] https://blog.csdn.net/weixin_36146275/article/details/55673211
[2] https://blog.csdn.net/duan1078774504/article/details/51912868

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值