cookie与session 通俗易懂

本文介绍了JavaWeb中的核心技术——Cookie和Session。详细解析了Cookie和Session的概念、使用步骤、特点及区别,帮助读者深入理解这两种会话管理技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

轻松搞懂cookie与session

Java Web – cookie&session



前言

我们来聊一聊Java Web中的常用技术,cookie和session,有些小伙伴可能对它们的理解不是很清楚,今天让我来帮大家梳理一下,轻松搞懂 cookie和session !


种一棵树最好的时间是10年前,其次就是现在,加油!
                                                                                   --by蜡笔小柯南

一、cookie是什么?

概念:
客户端会话技术,将数据保存到客户端,每次请求都会把对应的cookie发送到服务器端。

二、使用步骤

1.快速入门

代码如下(示例):

// 1.创建cookie对象
Cookie cookie = new Cookie(String name,String value);
// 2.发送cookie
response.addCookie(Cookie cookie);
// 3.获取cookie,得到数据
Cookie[] cookies = request.getCookies();

2.实现原理

基于响应头set-cookie和请求头cookie实现


3.cookie细节问题

1.一次可不可以发送多个cookie?

  • 可以,创建多个cookie对象,多次调用response.addCookie()方法即可

2.cookie在浏览器中保存多长时间?

  1. 默认情况下,当浏览器关闭时,cookie就被销毁
  2. 手动设置cookie的存活时间,使用setMaxAge(int seconds)方法
    • 正数:单位为秒,将cookie保存到硬盘上,进行持久化存储,设置保存的时间,时间过后,自动删除
    • 零:删除cookie
    • 负数:默认情况(即关闭浏览器,自动删除cookie)

3.cookie能不能存储中文?

  • 在tomcat 8以前,不能直接存储中文,在tomcat 8之后,cookie支持中文数据

4.cookie的共享问题?

  • 在同一个tomcat服务器中,部署了多个web项目,这些web项目之间cookie能否共享?
    • 默认情况下,不能共享
    • 可以使用 setPath(String path)方法,设置cookie的获取范围,默认情况下,设置当前的虚拟目录,如果要共享,设置为"/"
  • 不同tomcat服务器之间cookie共享问题?
    • setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
    • 如:setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享

4.cookie的特点和作用

1.cookie的特点

  • cookie存储在客户端浏览器
  • 浏览器对于cookie的大小有限制,单个cookie不能超过4kb,对同一个域名下总的cookie数量也有限制,不能超过20个

2.cookie的作用

  • cookie用于存储少量的不太敏感的数据
  • 在不登录的情况下,完成服务器对客户端的身份识别

三、session是什么?

概念:
服务器端会话技术,在一次会话的多次请求之间共享数据,将数据保存到服务器的对象中(session的实现是依赖于cookie的)

1.快速入门

代码如下(示例):

1. 获取HttpSession对象:
		HttpSession session = request.getSession();
2. 使用HttpSession对象:
		Object getAttribute(String name)  
		void setAttribute(String name, Object value)
		void removeAttribute(String name) 

2.session细节

1.在同一个会话中,不同的HTTP请求,可以获得同一个session对象,为什么?

  • 通过cookie,在浏览器端写入一个JSESSIONID

2.服务器不关闭,浏览器关闭后,再次打开,两次获取到的session是否为同一个?

  • 默认情况下,不是
  • 如果需要相同,则要创建cookie,设置超时时间,键为JSESSIONID
Cookie cookie = new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(60*60);
response.addCookie();

3.浏览器不关闭,服务器关闭后重新打开,两次获取到的session是否为同一个?

  • 不是同一个
  • tomcat会自动完成以下动作,在tomcat关闭前,会执行session的钝化,将数据保存到硬盘上,在tomcat启动后,会执行session的活化,将session文件转化为内存中的session对象

3.session什么时候被销毁?

  1. 服务器关闭后
  2. 调用销毁的方法: session.invalidate();
  3. 设置失效时间,默认30分钟自动失效
			<session-config>
		        <session-timeout>30</session-timeout>
		    </session-config>

4.session的特点

  • session用于存储一次会话的多次请求的数据,保存在服务器端
  • session可以存储任意类型,任意大小的数据

四、cookie与session的区别?

  1. session数据存在服务器端,cookie存在客户端
  2. session没有数据大小限制,cookie有
  3. session数据安全,cookie相对不安全

总结

到这里我们的cookie与session都已经介绍完了:
有没有豁然开朗的感觉呢,希望大家一键3连哈(4连也可以)。要想生活过得去,结尾总得带点绿~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值