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

Cookie饼干

什么是Cookie?

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

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

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

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

如何创建Cookie

先写一个cookie.html页面:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第1张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第2张图片

页面效果:

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第3张图片

 我们先来解决cookie的创建:

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

BaseServlet:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第4张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第5张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第6张图片

运行:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第7张图片

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

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第8张图片

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第9张图片

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第10张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第11张图片

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第12张图片

 服务器如何获取Cookie

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第13张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第14张图片

 点击Cookie获取按钮:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第15张图片

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

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第16张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第17张图片

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

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第18张图片

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第19张图片

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第20张图片

Cookie值的修改

方案一:

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

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

3.通用response.addCookie(Cookie)

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第21张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第22张图片

点击修改Cookie的按钮:

 方案二:

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

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

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第23张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第24张图片

 点击修改值的按钮:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第25张图片

 注:

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

谷歌:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第26张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第27张图片

火狐:

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第28张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第29张图片

Cookie生命控制 

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

setMaxAge()

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

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

零:表示马上删除Cookie

setMaxAge(-1):

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第30张图片

点击默认存活按钮:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第31张图片

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

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第32张图片

defalutLife被删除了。

 setMaxAge(0):

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第33张图片

 点击立即删除:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第34张图片

 我们发现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  发送

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第35张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第36张图片

点击路径设置按钮:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第37张图片

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

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

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第38张图片

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

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

细节和原理:

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第39张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第40张图片

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第41张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第42张图片

 运行结果:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第43张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第44张图片

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页面:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第45张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第46张图片

 页面效果:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第47张图片

servlet:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第48张图片

修改前端页面:

 运行结果:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第49张图片

点击创建和获取按钮:

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

Session域数据的存取

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第50张图片

 运行结果:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第51张图片

 点击存储按钮:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第52张图片

点击获取按钮:

Session 生命周期控制

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

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

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

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

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

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

 运行结果:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第53张图片

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第54张图片 

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

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

30

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第55张图片

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

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第56张图片

 

运行结果:

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第57张图片

点击获取Session按钮:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第58张图片 

点击Session3秒超时销毁按钮:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第59张图片 

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第60张图片 

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

 Session超时的概念:(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第61张图片

 public void invalidate()方法:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第62张图片

 

 运行结果:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第63张图片

先获取Session

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第64张图片 

点击马上销毁按钮:

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第65张图片 

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

(尚硅谷)javaweb学习笔记--------Cookie,Session部分_第66张图片浏览器和Session之间关联的技术内幕 

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

 (尚硅谷)javaweb学习笔记--------Cookie,Session部分_第67张图片

 

 

你可能感兴趣的:(javaweb,javaweb,cookie,session)