申明一下,本博客较适合第一次接触Cookie、Session的新手。
cookie的英文为饼干、小甜点,但是在计算机中可以把它认为一种记录某种信息的标签。这玩意在浏览器中很常见,浏览器一般都有清除缓存、cookie、登录账号的功能。Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据。
假设浏览器是顾客,服务器是商家,那么Cookie就类似于VIP。当浏览器第一次访问服务器时,服务器为了方便提供更好的服务,给浏览器一些Cookie。(类似于免费给个VIP,吸引顾客的套路) 当浏览器再次去访问服务器时,浏览器会带上Cookie(有VIP还不用?),服务器一看浏览器有Cookie赶紧请他到里面坐,端茶的端茶、倒水的倒水。。。 那么真正的Cookie类似这个作用,当浏览器访问服务器时,服务器强制塞给浏览器一些加密的信息(防止破解),当浏览器再次去访问该服务器,它会自动带上之前的Cookie信息,这样服务器一看就是认得出来。当然Cookie也有大小、存活时间限制,所有浏览器需要定期清理一些无用的Cookie垃圾信息。
从上的叙述看的出 Cookie放在了浏览器端,大多浏览器都可以查看。比如谷歌、火狐、Edge浏览器,按一下F12调出开发者工具。 在百度任意输入一个关键字搜索
特意写了两个小demo,向加深理解的可以看看。 Java Web 基于Cookie记住用户名 Java Web 基于Cookie记住已浏览过的书籍
session的英文大意为开会、会议的意思,在计算机中大多称为“会话”,浏览器访问一次服务器包括中间的信息传输,这个过程可以称为一个会话。Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
Session的作用非常类似于Cookie,作用都是用存放重要信息。当浏览器访问服务器,服务器塞给浏览器一个唯一的JSESSIONID,这玩意也是一个Cookie,并且服务器在服务端记录这个JSESSIONID,当浏览器再次访问(会自动带上JSESSIONID),服务器一看到这个JSESSIONID就知道这是VIP用户。
Session是放在服务器端的,所以浏览器客户端无法查看,但是JSESSIONID是一个Cookie,所以JSESSIONID是可以在开发者工具中进行查看的。
Cookie是放在浏览器端的,并且户可以随意查看,所以安全性较低,有些不怀好意的人会进行破解,比如Cookie欺骗。Session是放在服务器端,相对较为安全,但是同样会占用服务器的资源,所以Session也有大小、个数的限制。
由于session是存放在服务器的内存中,当服务器关闭、重启,那么所有的session都会丢失,这可能会造成一些的问题。所以当服务器关闭、重启时,我们可以把它写入磁盘,当再次启动服务器时,又读入内存。那么这个存入磁盘的过程就叫做session的持久化。
Java Web 基于Session模拟购物车
欢迎大家在评论区留言评论、交流!