一、Cookie详解
(1)什么是Cookie
Cookie是一种在浏览器端存储的小型文本文件,是由网站向客户端(通常是浏览器)发送的数据。它通常用于识别用户以及存储用户的偏好和行为等信息。在用户访问同一网站时,服务器可以读取这些cookie,以便在用户下次访问该网站时提供个性化的体验,如自动填充表单、保持登录状态、跟踪用户行为等。
(2)Cookie的创建方式和获取方式
创建方式
//创建一个Cookie保存username
Cookie cookie = new Cookie("username","haoren");
//设置Cookie的生命周期(默认值是负数存在内存中;正数存在于外存中时间结束后删除;0删除Cookie)
cookie.setMaxAge(3600);
//设置Cookie的作用域
cookie.setPath("/");
//写出Cookie
response.addCookie(cookie);
获取方式
Cookie[] cookies = request.getCookies();
(2)Cookie的生命周期
Cookie的生命周期可以分成以下几个部分:
1. 创建Cookie:当浏览器访问服务器时,服务器发送Cookie给浏览器。浏览器会将Cookie存储在本地,以备之后使用。
2. 存储Cookie:浏览器将Cookie存储在本地,可以是在内存中或硬盘中。
3. 发送Cookie:当浏览器再次访问同一网站时,浏览器会将该网站的Cookie发送给服务器。
4. Cookie的过期时间:Cookie可以设置一个过期时间,超过该时间Cookie就失效了。如果没有设置过期时间,就是会话Cookie,浏览器关闭后就会失效。
5. 删除Cookie:当用户退出登录或删除Cookie时,Cookie就会被删除。
需要注意的是,Cookie是存储在浏览器中的文本文件,因此Cookie可能会被用户删除或篡改。为了增强Cookie的安全性,可以对Cookie进行加密和签名,以保护Cookie的完整性和机密性。
二、Session详解
(1)什么是会话
是指用户打开一个浏览器,访问多个Web资源然后关闭浏览器,整个过程称为一次会话
(2)什么是Session
Session是指在Web应用程序中跟踪用户会话状态的机制。当用户访问一个Web应用程序时,应用程序会创建一个Session,这个Session会跟踪用户的请求和响应。在Session中,可以存储一些和用户有关的信息,例如用户的登录状态、购物车信息、浏览记录等。
Session的实现方式通常是在服务端创建一个唯一的Session ID,然后把这个Session ID发送给客户端的浏览器。浏览器在后续的请求中会带上这个Session ID,以便服务端可以找到对应的Session并进行处理。由于Session数据存储在服务器端,所以相对于Cookie来说,Session更加安全,因为客户端无法直接修改Session数据。
(3)Session什么时候产生
Session可以在以下情况下产生:
当用户首次访问一个网站时,服务器会在后台自动为该用户创建一个Session,并为该Session分配一个唯一的Session ID。
当用户提交表单或发起请求时,请求中会包含Session ID,服务器可以通过Session ID来识别和跟踪该用户在应用程序中的状态。
当用户访问一个网站时,如果之前已经创建过Session,则服务器会自动加载该Session中保存的信息,以便为用户提供个性化的服务。
(4)Session的生命周期
Session默认失效时间30分钟
在工程中web.xml中修改存活时间
<session-config>
<session-timeout>30</session-timeout>
</session-config>
默认配置是配置在config下的web.xml中
三、区别
主要区别如下:
存储位置:Cookie是在客户端存储的,而Session是在服务器端存储的。
安全性:由于Cookie存储在客户端,因此Cookie经常被用于存储敏感信息,例如用户的登录信息等。但是Cookie非常容易被篡改,因此安全性相对较低。而Session存储在服务器端,安全性较高。
存储容量:Cookie的存储容量相对较小,一般在4KB左右。而Session的存储容量相对较大,可以存储更多的数据。
生命周期:Cookie可以设置生命周期,可以长期存储在客户端,直到过期或被删除。而Session的生命周期默认情况下是会话期间,即用户关闭浏览器时自动销毁。
访问方式:Cookie可以在客户端被访问和修改。而Session只能在服务器端被访问和修改。
综上所述,Cookie和Session各有优劣,需要根据具体需求选择使用。一般情况下,Cookie用于存储少量的简单信息,例如用户的偏好设置等。