一、会话跟踪技术

二、Cookie

(一)Cookie基本使用

1.服务器发送Cookie

a.创建Cookie对象,设置数据

b.发送Cookie,respone

2.服务器获取Cookie

c.获取客户端携带的所有Cookie,使用request对象

d.遍历数组获取每一个cookie对象

e.使用Cookie对象方法获取数据

(二)Cookie原理

 (三)Cookie使用细节

1.Cookie存活时间

2.Cookie存储中文

三、Session

(一)Session基本使用

 (二)Session原理

 (三)Session细节

1.Session钝化,活化

2.Session销毁

四、使用场景


 一、会话跟踪技术

会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中,可以包含多次请求和响应。(几个浏览器,几个会话)

会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自同一浏览器,以便在同一次会话的多次请求间共享数据

因为HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享

        因此为了实现会话跟踪:

                客户端会话跟踪技术:Cookie

                服务端会话跟踪技术:Session

二、Cookie

客户端的会话技术,将数据保存到客户端,一行每次请求都携带Cookie数据进行访问

(一)Cookie基本使用

1.服务器发送Cookie

a.创建Cookie对象,设置数据

Cookie cookie=new Cookie("key","value")

b.发送Cookie,respone

response.addCookie(cookie)

2.服务器获取Cookie

c.获取客户端携带的所有Cookie,使用request对象

Cookie[] cookies=request.getCookies();

d.遍历数组获取每一个cookie对象
e.使用Cookie对象方法获取数据

cookie.getName()

cookie.getValue();

(二)Cookie原理

Cookie的实现是基于HTTP协议

响应头:set-cookie

请求头:cookie

java 从request请求中获取cookie java获取cookie指定值_客户端

 (三)Cookie使用细节

1.Cookie存活时间

——默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁

——setMaxAge(int seconds):设置cookie存活时间

        a.正数:将Cookie写入浏览器所在的电脑硬盘,持久化存储。到时间自动删除

        b.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,Cookie销毁

        c.零:删除对应Cookie

java 从request请求中获取cookie java获取cookie指定值_服务器_02

2.Cookie存储中文

默认不能直接存储中文,会报错

如果需要存储,则需要转码:url编码 

java 从request请求中获取cookie java获取cookie指定值_学习_03

三、Session

服务端会话跟踪技术:将数据保存到服务端。

因为数据在浏览器来回传输,不太安全

java 从request请求中获取cookie java获取cookie指定值_学习_04

(一)Session基本使用

 javaEE提供的HTTPSession接口,来实现一次会话的多次请求间数据共享功能

1.获取Session对象

HttpSession session=request.getSession();

2.Session对象功能

void setAttribute(String name,Object o):存储数据到session域中

Object getAttribute(String name):根据key,获取值

void reoveAttribute(String name):根据key,删除取键值对

java 从request请求中获取cookie java获取cookie指定值_学习_05

 

java 从request请求中获取cookie java获取cookie指定值_学习_06

 (二)Session原理

Session是基于Cookie实现的

java 从request请求中获取cookie java获取cookie指定值_服务器_07

 保证了一个会话的Session对象是一个

怎么做到:

java 从request请求中获取cookie java获取cookie指定值_服务器_08

 一次会话,会设置id,用Cookie传送id,。(先传暗号,在查数据)

 (三)Session细节

1.Session钝化,活化

        服务器重启后,Session中的数据还在吗?

                正常关闭,不会销毁,就是crtl+c和指令

原因:

钝化:在服务器正常关闭后,tomcat会自动将session数据写入硬盘的文件中

火花:再次启动服务器后,从文件加载数据带Session中

2.Session销毁

a.默认销毁

java 从request请求中获取cookie java获取cookie指定值_服务器_09

在tomcat文件中web.xml里面写的

也可以在项目里web.xml里修改

b.手动销毁

调用Session对象的invalidate()方法 

session.invalidate();

四、使用场景

java 从request请求中获取cookie java获取cookie指定值_客户端_10