会话
用户打开一个浏览器,点击了许多web资源,然后关闭浏览器,这个过程就叫会话。简单来说用户访问了你的网站,访问完你的网站后就把浏览器关闭,在这个过程中浏览器记录了用户进入你网站的记录,这个记录可以分为把记录存在客户端和服务端,也就是我们经常说的cookie和session。
什么是cookie和session呢?
cookie
对于这个问题,我们可以这样假想这样的一个问题,我们如何证明自己是学校里的学生!我们通过学校发校服给我们或者等手段来证明我们是学校的学生,通过校服和学生证我们就可以进入学校,上面举例就是cookie与服务端的关系,cookie就是把服务端给的数据存储在本地。
cookie注意点:
- cookie从请求中获得
- cookie是把数据存储在本地,请求时会把cookie带上.
- cookie只能存储字符串
- 一个站点可以把20个cookie存在在访问的浏览器上
- 一个cookie只能存4kb数据。
- 默认时长就是关闭浏览器时,自动销毁。setMaxAge()可以设置存在时间,单位秒
cookie常用方法:
- new Cookie(kay(String),value(String))创建cookie
- addCookie()响应cookie
- getCookies()获得coolie数据
- getName()获得cookie名字
- getValue()获得cookie的值
session
session服务气器给每个用户创建一个session对象,一个session独站一个浏览器,浏览器关闭seesion也销毁。当浏览器访问我们的站点后浏览器就已经在我们容器中创建一个session。
session注意点:
- session是把数据存放在服务端。
- session通过请求获取
- 浏览器关闭session不会立即销毁,session销毁根据设置的时间或默认时间销毁;我们知道Session是存在于服务器端的,当把浏览器关闭时,浏览器并没有向服务器发送任何请求来关闭Session,自然Session也不会被销毁。
seesio的常用方法:
- getId()浏览器自动创建的seesionid
- isNew()p判断session是最新的吗
- setAttribute(String,Object)把数据存储到域中供其他servlet使用
- getAttribute(String)获得数据
- removeAttribute(String);更具名称删除session
- invalidate()销毁session
设置超时时间:
设置超时时间有两种:代码与xml配置
1、 setMaxInactiveInterval()设置sessionz最大时长(单位秒)
2、通过web.xml配置sessio的时长(单位分钟)
<session-config>
<session-timeout>1</session-timeout>
</session-config>
seassion用途
- 保存一个登录用户信息
- 购物车
- 在整个网站中经常使用的数据,将他保存在session中。
session与cookie 区别
- cookie是把数据写给用户的浏览器,浏览器保持(可以保存多个,一个站点最多20)
- session把用户数据写道用户独占session中,服务端保存数据(session数量也是有限的,尽量保存重要信息)
- session对象由服务端创建
- cookie在不更改默认最大时长值时,cookie会根绝浏览器关闭而销毁,session不会。