Cookie和Session常用操作方法总结

最后

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

Cookie uiColorCookie = new Cookie(“color”, “red”);

response.addCookie(uiColorCookie);

1.2 设置Cookie的到期时间

我们可以设置最大年龄(使用方法maxAge(int)),该方法定义给定Cookie的有效时间为多少秒:

uiColorCookie.setMaxAge(60*60);

我们将最长年龄设置为一小时。在此时间之后,客户端(浏览器)无法在发送请求时使用Cookie,也应将其从浏览器缓存中删除。

1.3 设置Cookie域

Cookie API中的另一个有用的方法是setDomain(String)。

这使我们可以指定客户端应将其交付给的域名。这也取决于我们是否明确指定域名。

让我们为cookie设置域:

uiColorCookie.setDomain(“example.com”);

该Cookie将传递给_example.com_及其子域提出的每个请求。

如果我们未明确指定域,则将其设置为 创建cookie的域名。

例如,如果我们从_example.com_创建cookie,并将域名保留为空,那么它将被发送到_www.example.com_(不包含子域)。

除了域名,我们还可以指定路径。接下来让我们看一下。

1.4 设置Cookie路径

该路径指定将cookie传递到的位置。

如果我们明确指定路径,则Cookie将被传递到给定的URL及其所有子目录:

uiColorCookie.setPath(“/welcomeUser”);

隐式地,它将被设置为创建cookie及其所有子目录的URL。

现在,让我们集中讨论如何在_Servlet中_检索它们的值。

1.5 在Servlet中读取Cookies

Cookie由客户端添加到请求中。客户端检查其参数,并决定是否可以将其传递到当前URL。

我们可以通过对传递给_Servlet_的请求(HttpServletRequest)调用getCookies()来获取所有cookie 。

我们可以遍历此数组并搜索所需的数组,例如,通过比较它们的名称:

public Optional readCookie(String key) {

return Arrays.stream(request.getCookies())

.filter(c -> key.equals(c.getName()))

.map(Cookie::getValue)

.findAny();

}

1.6 删除Cookie

要从 浏览器中删除Cookie,我们必须向响应添加一个同名的cookie,但其maxAge值应设置为0

Cookie userNameCookieRemove = new Cookie(“userName”, “”);

userNameCookieRemove.setMaxAge(0);

response.addCookie(userNameCookieRemove);

删除Cookie的示例用例是用户注销操作-我们可能需要删除一些为活动用户会话存储的数据。

现在我们知道了如何处理_Servlet中的_cookie 。

接下来,我们将介绍我们从访问非常频繁的另一个重要目标_的Servlet_ -一个_会话_对象。

2. HttpSession


在_HttpSession中_,对于跨不同存储请求用户相关的数据的另一种选择。会话是保存上下文数据的服务器端存储。

数据不会在不同的会话对象之间共享(客户端只能从其会话访问数据)。它还包含键值对,但是与cookie相比,会话可以包含对象作为值。存储实现机制取决于服务器。

会话通过cookie或请求参数与客户端匹配。更多信息可以在这里找到。

2.1 获取会话

我们可以直接从请求获取_HttpSession_:

HttpSession session = request.getSession();

如果上面的代码不存在,它将创建一个新的会话。我们可以通过调用以下命令实现相同的目的:

request.getSession(true)

如果我们只想获取现有会话而不创建新会话,则需要使用:

request.getSession(false)

如果我们是第一次访问JSP页面,那么默认情况下会创建一个新会话。我们可以通过将_session_属性设置为_false_来禁用此行为:

<%@ page contentType=“text/html;charset=UTF-8” session=“false” %>

在大多数情况下,Web服务器使用cookie进行会话管理。创建会话对象后,服务器将创建一个带有_JSESSIONID_键和标识会话的值的cookie 。

2.2 会话属性

会话对象提供了许多方法来访问(创建,读取,修改,删除)为给定用户会话创建的属性:

  • setAttribute(String,Object),它使用键和新值创建或替换会话属性

  • getAttribute(String)读取具有给定名称(键)的属性值

  • removeAttribute(String)删除具有给定名称的属性

我们还可以通过调用getAttributeNames()轻松检查已经存在的会话属性。

如前所述,我们可以从请求中检索会话对象。当我们已经有了它时,我们可以快速执行上述方法。

我们可以创建一个属性:

HttpSession session = request.getSession();

session.setAttribute(“attributeKey”, “Sample Value”);

最后

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

Java核心知识

  • Spring全家桶(实战系列)

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

  • 其他电子书资料

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

[外链图片转存中…(img-5eBqZrAv-1715823427890)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值