JavaWeb:Cookie与Session的一些知识。
1. Cookie
1.1 什么是Cookie?
- Cookie是服务器通知客户端保存键值对的一种技术。
- 客户端有了Cookie后,每次请求都发送给服务器。
- 每个Cookie的大小不能超过4KB.
1.2 如何创建Cookie?
需要在方法中添加参数HttpServletResponse,由它通知客户端保存Cookie。
需要注意的是:Cookie所属的类应该为:javax.servlet.http.Cookie;
客户端收到响应后执行的操作:发现有set-cookie的响应头,就去查看自己的cookie,有这个cookie,则修改,如果没有就创建。
小案例:
@RequestMapping("/login")
public Result loginCheck(@RequestBody Map<String, Object> map, HttpServletRequest request, HttpServletResponse response){
Result result = null;
// 1. 创建Cookie对象
Cookie cookie = new Cookie("user", "五彩斑斓的黑");
// 2. 通知客户端保存Cookie
response.addCookie(cookie);
return result;
}
浏览器查看执行后结果:
1.3 如何获取Cookie?
需要在方法中添加参数HttpServletRequest,从请求中获取对应的cookie值。获取的cookie是一个数组。
小案例:
@RequestMapping("/login")
public Result loginCheck(@RequestBody Map<String, Object> map, HttpServletRequest request, HttpServletResponse response){
Result result = null;
Cookie[] cookies = request.getCookies();
for(Cookie c: cookies){
System.out.println(c.getName() + "," + c.getValue());
}
return result;
}
执行后在控制台打印的信息如下:
user,五彩斑斓的黑
JSESSIONID,23D4B685F0C5E799F924C6A3B259FF2F
1.4 Cookie的生命控制
生命控制指的是如何管理Cookie(什么时候进行销毁。)
setMaxAge();
-
正数:指定的秒数后过期
-
负数(默认值):表示浏览器一关,Cookie就会被删除
-
0:表示马上删除Cookie
2. Session会话
1. 什么是Session会话?
- Session是一个接口(HttpSession)。
- Session就是会话,它是用来维护客户端和服务器关联的一种技术。
- 每个客户端都有自己的一个Session会话。
- Session中,我们经常用来保存用户登录之后的信息。
2. Session的创建或获取
第一次调用时:使用request.getSession()方法获取。
使用session.isNew()判断session是否为刚创建出来。true表示刚创建,false则反之。
小案例:
@RequestMapping("/login")
public Result loginCheck(@RequestBody Map<String, Object> map, HttpServletRequest request, HttpServletResponse response){
Result result = null;
HttpSession session = request.getSession();
System.out.println(session.getId());
System.out.println(session.isNew());
return result;
}
3. Cookie和Session的区别
主要区别是一个存储在客户端(Cookie),一个存储在服务器端(Session)。
具体详情可见本人觉得一片很不错的博客:
资料参考:尚硅谷JavaWeb视频P258——P269部分
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗