(尚硅谷)javaweb学习笔记--------Cookie,Session部分

Cookie饼干

什么是Cookie?

1.Cookie翻译过来是饼干的意思。

2.Cookie是服务器和客户端保存键值对的一种技术。

3.客户端有了Cookie后,每次请求都发送给服务器。

4.每个Cookie的大小不超过4kb

如何创建Cookie

先写一个cookie.html页面:

页面效果:

 

 我们先来解决cookie的创建:

要建立一个servlet来实现它的请求。

BaseServlet:

运行:

现在我们只发现了两个初始的Cookie值。

当我们点击创建Cookie的按钮时:

 我们发现多出来了一个我们建立的Cookie.

我们不是一次只能创建一个Cookie,我们可以一次创建多个Cookie。

 我们再点击一次创建cookie的按钮:

 服务器如何获取Cookie

服务器获取客户端的Cookie只需要一行代码:req.getCookie():cookie[](会返回一个cookie数组)

 点击Cookie获取按钮:

但是我们发现Cookie没法像 map一样通过获取key来直接输出对应的cookie。

那如果我们想只输出特定的cookie值应该怎么做呢?

这种循环查找特定cookie的方法以后会经常能够用上,所以我们可以写一个工具类来做这个方法。

 

所以我们之前的代码就不用写的那么复杂了:

 

Cookie值的修改

方案一:

1.先创建一个要修改的同名的Cookie对象

2.在构造器,同时赋于新的Cookie值

3.通用response.addCookie(Cookie)

点击修改Cookie的按钮:

 方案二:

1.先查找到需要修改的Cookie对象

2.调用setValue()方法赋予新的Cookie值

3.调用response.addCookie()通知客户端保存修改

 点击修改值的按钮:

 注:

 谷歌和火狐浏览器怎么查看Cookie

谷歌:

火狐:

 

Cookie生命控制 

 Cookie的生命控制指的是如何管理Cookie什么时候被销毁(删除)

setMaxAge()

正数:表示在指定的秒数后过期

负数:表示浏览器一关,Cookie就会被删除(默认值是-1)

零:表示马上删除Cookie

setMaxAge(-1):

 

点击默认存活按钮:

出现了defalutLife的Cookie,当我们关闭浏览器时,再重新打开浏览器:

 

defalutLife被删除了。

 setMaxAge(0):

 点击立即删除:

 我们发现Name为key4的Cookie直接就被删除了。

我们还可以设置Cookie的存活时间:

Cookie有效路径Path的设置

Cookie的path属性可以有效的过滤哪些Cookie可以发送给服务器,哪些不发。

path属性是通过请求的地址来进行有效的过滤。

CookieA        path=/工程路径

CookieB        path=/工程路径/abc

请求地址如下:

http://ip:port/工程路径/a.html

CookieA 发送

CookieB  不发送

http://ip:port/工程路径/abc/a.html

CookieA 发送

CookieB  发送

点击路径设置按钮:

我们发现因为路径不匹配,所以这个cookie并不会显示出来。

我们更改下符合要求的路径:

 

我们创建的cookie显示出来了。 

 Cookie练习---------免输入用户名登录

细节和原理:

 

 

 运行结果:

Session会话

什么是Session会话?

1.Session就是一个借口(HttpSession)。

2.Session就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。

3.每个客户端都有自己的一个Session会话。

4.Session会话中,我们经常来保存用户登录之后的信息。

如何创建Session和获取(id号,是否为新)

如何创建和获取Session。它们的API是一样的。

request:getSession()

第一次调用是:创建Session会话

之后调用都是:获取前面创建好的Session会话对象。

isNew():判断到底是不是刚创建出来的(新的)

true:表示刚创建

false:表示获取之前创建

每个会话都有一个身份证号。也就是ID值。而且这个ID值是唯一的。

getId():得到Session的会话id值。

例:

前端html页面:

 页面效果:

servlet:

修改前端页面:

 运行结果:

点击创建和获取按钮:

 我们就能获取Session的信息了。

Session域数据的存取

 运行结果:

 点击存储按钮:

点击获取按钮:

Session 生命周期控制

public void setMaxInactiveInterval(int Interval)设置session的超时时间(以秒为单位),超过指定的时长,Session就会被销毁。

public int getMaxInactiveInteravl()获取Session的超时时间

值为正数的时候,设定Session的超时时长。

负数表示永不超时(极少使用)

public void invalidate()让当前Session会话马上超时无效。

Session默认的超时时长是多少?

 运行结果:

 

 Session默认的超时时长为30分钟。

因为在Tomcat服务器的配置文件web.xml中默认有以下的配置,它就表示配置了当前Tomcat服务器下所有的Session的超时配置默认时长为:30分钟

<session-config>

<session-timeout>30</session-timeout>

</session-config>

 如果说,你希望你的web工程,默认的Session的超时时长为其他时长,你可以在你自己的web.xml配置文件中做以上相同的配置,就可以修改你的web工程所有Session的默认时长。

如果你想只修改个别Session的超时时长。就可以使用上面的API. setMaxInactiveInterval(int Interval)来进行单独的配置。

session.setMaxInactiveInterval(int Interval)单独设置超时时长。

 

运行结果:

 

点击获取Session按钮:

 

点击Session3秒超时销毁按钮:

 

3秒后我们再点击获取session按钮:

 

我们发现这个时候,session的状态是true。所以我们可以发现之前的session在3秒后已经销毁了,新的session第一次创建时状态为true。

 Session超时的概念:

 public void invalidate()方法:

 

 运行结果:

先获取Session

 

点击马上销毁按钮:

 

当我们再次获取新的Session的时候,就会新创建一个:

浏览器和Session之间关联的技术内幕 

Session技术,底层其实是基于Cookie技术来实现的。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值