会话技术
当用户打开浏览器的时候,访问不同的资源,直到用户将浏览器关闭,可以认为这是一次会话.
应用场景:
用户登录
验证码
购物车
访问记录
.....
分类:
cookie:浏览器端会话技术
session:服务器端会话技术
cookie:
cookie是由服务器生成,通过response将cookie写回浏览器(set-cookie),保留在浏览器上,
下一次访问,浏览器根据一定的规则携带不同的cookie(通过request的头 cookie),
cookie的api:
newCookie(String key,String value)
写回浏览器:
response.addCookie(Cookiec)
获取cookie:
Cookie[]request.getCookies()
cookie的常用方法:
getName():获取cookie的key(名称)
getValue:获取指定cookie的值
常用方法:
setMaxAge(int秒):设置cookie在浏览器端存活时间 以秒为单位
若设置成 0:删除该cookie(前提必须路径一致)
setPath(Stringpath):设置cookie的路径.
当我们访问的路径中包含此cookie的path,则携带
默认路径:
访问serlvet的路径,从"/项目名称"开始,到最后一个"/"结束
例如:
访问的serlvet路径:
/day11/a/b/hello
默认路径为:
/day11/a/b
手动设置路径:以"/项目名"开始,以"/"结尾;
注意:
cookie不能跨浏览器
cookie中不支持中文
session:
服务器端会话技术.
当我们第一次访问的服务器的时候,服务器获取id,
1.能获取id
要拿着这个id去服务器中查找有无此session
1.若查找到了:直接拿过来时候,将数据保存,将当前sessin的id返回给浏览器
2.若查找不到:创建一个session,将数据保存到session,将当前session的id返回给浏览器
2.不能获取id
创建一个session,将你的数据保存到这个session中,将当前session的id返回给浏览器
获取一个session:
HttpSession request.getSession()
域对象:
xxxAttribute
生命周期:
创建:第一次调用request.getsession()创建
销毁:
1.服务器关闭
2.session超时
默认时间超时:30分钟 web.xml有配置
手动设置超时:setMaxInactiveInterval(int 秒)
3.手动关闭session
session.invalidate()