黑马程序员技术交流社区
标题:
【南京校区】会话概述
[打印本页]
作者:
大蓝鲸Java
时间:
2019-1-4 11:56
标题:
【南京校区】会话概述
会话概述
一、会话概述
1.
什么是一次会话?
用户打开浏览器访问某个网站,在这个网站上浏览任意页面,访问完成后将浏览器关闭的过程称为是一次会话。
2.
会话要解决的问题是什么?
会话技术是用于解决,在会话过程中数据的保存问题。
3.
常用的会话技术
Cookie
:将数据保存到客户端浏览器。
Session
:将数据保存到服务器端。
二、
Cookie
1. Cookie
概述
Cookie
就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务
器发送请求的时候都会带上这些特殊的信息。
2.
创建
Cookie
说明:
Cookie
是由服务器端向浏览器端输出的一段文本,所以可以通过
response
对象将
Cookie
写回浏览器。
3.
获取
Cookie
说明:浏览器每次访问发送请求时,会携带
Cookie
,所以可以通过
request
对象获取
Cookie
。
4. Cookie
的分类
会话级别:当没有设置
Cookie
的有效时间,默认就是会话级别的
Cookie.
关闭浏览器
Cookie
就会销毁
.
持久级别:通过设置
Cookie
的有效时间
.
那么关闭浏览器
Cookie
还会存在
.
5.
删除持久级别的
Cookie
Cookie cookie
=
new
Cookie
(
"username"
,
"admin"
);
//
设置
cookie
的有效路径,将有效路径设置为当前应用,则访问当前应用下的所有资源,浏览器都会带着它给服务器。
cookie
.
setPath
(
request
.
getContextPath
());
//
设置
cookie
的有效时间,不设置就是会话过程,
cookie
存在浏览器的内存中
cookie
.
setMaxAge
(
60
*
60
*
24
*
7
);
//
将
cookie
输出到客户端
response
.
addCookie
(
cookie
);
//
获得浏览器带过来的所有的
Cookie
Cookie
[]
cookies
=
request
.
getCookies
();
说明:将
Cookie
的
maxAge
置为
0
,可以销毁持久级别的
Cookie
。但前提条件是,
Cooike
的有效路径必须一致。
三、
Session
1. Session
概述
Session
是
Servlet
中的一个域对象,可以用于保存用户数据。
Session
的作用域范围是一次会话。
2.
创建
Session
对象
服务器端第一次调用
request.getSession()
时创建
session
3.
销毁
Session
对象
Session
过期。
说明:
Session
默认过期时间为
30
分钟,可以通过配置
web.xml
修改
Session
的过期时间。
非正常关闭服务器。
说明:如果正常关闭服务器,
session
会序列化到硬盘。当服务器重新启动时,会执行反序列化。
调用
session.invalidate()
方法。
4. Session
的执行原理
当服务器端第一次调用
request.getSession()
的时候,服务器会自动为其创建一个
Session
对象,并通过
Cookie
技术
将
Session
的
id
,发送给客户端浏览器。以后客户端再请求本应用中其他资源的时候,会自动将此
Cookie
携带到服
务器端。这样,服务器端在接到请求时候,就会收到
Session
的
id
,并根据
id
在内存中找到之前创建的
Session
对
象,提供给请求使用。
四、总结
会话是服务器与浏览器的交互过程,这个过程是连续的,也可以时断时续的。会话能够把用户与同一用户发出的不
同请求之间关联起来。不同用户的会话应当是相互独立的。会话一旦建立就应当一直存在,直到用户空闲时间超过
了某一个时间界限,容器才应当释放该会话资源。在会话的存活期间,用户可能给服务器发送了很多请求,该用户
的这些请求信息都可以存储在会话中。
Cookie
是客户端技术,可以用于在会话过程中保存用户的数据,但是要注意
Cookie
是有大小和个数限制的,不同的浏览器限制也不一样,所以使用时要稍加注意。
Session
是服务器端技术,
它是
Servlet
中的一个域对象,也可以用于在会话期间保存用户的数据。
Cookie cookie
=
new
Cookie
(
"username"
,
null
);
cookie
.
setPath
(
request
.
getContextPath
());
cookie
.
setMaxAge
(
0
);
response
.
addCookie
(
cookie
);
<session‐config>
<session‐timeout>
60
</session‐timeout>
</session‐config>
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2