我爱Java系列---【Cookie和Session】
一、四大域对象所对应的的对象
域对象
|
存取用法(Servlet存—>jsp取) request.getRequestDispatcher("/demo06.jsp").forward(request, response);
|
作用范围 |
ServletContext 包含application和config |
getServletContext().setAttribute("name","wangwu"); ${applicationScope.name} |
整个web项目,多个servlet可以共享数据。 |
Session |
request.getSession().setAttribute("name","lisi"); ${sessionScope.name}
|
会话一次会话 |
Request |
request.setAttribute("name","zhangsan"); ${requestScope.name} |
整个请求链(请求转发也存在) |
PageContext |
PageContext方法:set()、get()、remove() pageContext.findAttribute(“key”) 在这四大域对象中依次查找 |
一个jsp页面 ,一般用来jsp标签的数据传输 |
注意: 从上往下,作用范围由大到小。
pageContext作用
1.代理其他的三大域对象 pageContext.setAttribute(“key”,”value”,pageContext.SESSION_SCOPE); 存放 在session中代理了session
2.全域查找 pageContext.findAttribute(“key”) 在这四大域对象中依次查找
3.获取其他的jsp八大内置对象
pageContext 中代表域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
findAttribute方法,在四大域中搜寻属性,搜寻的顺序是page域、request域、session域、application域,从小域到大域开始搜索,如果搜索到就直接获取该值,如果所有域中都找不到,返回一个null(与el表达式不同,此处返回null,对网页是不友好的)
二、cookie和session
1.cookie
概述:
Cookie , 浏览器保存用户数据的技术 .
使用:
创建 ,在 服务器端 new Cookie对象 ,通过响应发送到 浏览器.
// 创建 Cookie Cookie cookie3 = new Cookie("username", "jack"); // 添加 多个Cookie // cookie3 与 cookie key 重名了 // 注意 : 如果key重复, 响应时是多个 , 浏览器的保存最后一个value. |
再次请求, 浏览器将 cookie提交服务器
// 获取 cookie数组 System.out.println(cookies);
} |
cookie设置
时间 : 默认cookie是关闭浏览器,一次会话结束就消失了 . 通过setMaxAge(second)秒值 ,生命时间
// 创建 // 设置时间
|
路径 : 默认cookie就是当前web应用 .当前应用中的生成Cookie,在访问应用中其他资源,也会提交 .
setPath(path) 通过设置路径,对cookie进行筛选 .
// 设置 cookie // 注意 : 路径写成 绝对路径, /web11 开始 |
删除Cookie
// 创建 Cookie //1. 设置时间为0
|
2.Session
概述 :
Session, 服务器保存用户数据的技术
使用 :
获取session , 依靠request的getSession . Session 对象服务器创建 , 通过 request获取,
当getSession 方法时, 判断请求中,是否有JSESSIONID, 如果没有,必然创建新的session .
如果有JSESSIONID ,通过id查询对应Session ,找到了就返给你, 找不到 创建新的session .
代码演示:
存储数据 // 获取Session // 保存数据 获取数据 // 获取 session // 获取 数据 ,通过 key 获取value System.out.println(username); |
session持久化
依靠cookie生命的延长 , 保证 JSESSIONID 存在 ,所以 可以 关闭浏览器,依然访问Session
session持久化 // 1. 获取 session // 2. 获取 JSESSIONID // 3. 把 id 保存 一个 Cookie中 , 键 名称 必须 JSESSIONID // 4. 设置时间 // 5. response 响应 到浏览器 |
cookie和session区别
cookie |
session |
|
保存位置 |
浏览器 |
服务器 |
数据类型 |
String |
对象 |
安全行 |
不安全 |
安全 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?