Cookie和Session(自用)

Web状态管理的四种方法:隐藏表单域、Cookie、Session、URL重写
隐藏表单域:只能用在表单上面,优点。缺点:不安全。值显示在html源代码中。

Cookie

Cookie:浏览器会话技术,由服务器生成,通过response将cookie写回浏览器,保存在浏览器上。
粗糙原理:服务器在响应请求是将一些数据以“键-值”对的形式通过响应信息保存在客户端上。
Cookie的生命周期默认为会话期间。也可以设置生命周期,方法是setMaxAge()。
写回浏览器:
response.addCookie(Cookie c)
获取cookie:
Cookie[] request.getCookies()
cookie的常用方法:
getName():获取cookie的key(名称)
getValue:获取指定cookie的值。

Session

Session :客户端会话技术,浏览器在访问服务器时,服务器会获取jsessionid(大写),
若获取不到:
       服务器创建一个session,保存用户数据,将该session的jsessionid通过响应返回给浏览器,并且该jsessionid的值被浏览器的Cookie保存。
       若获取到:
              服务器拿着这个jessionid去session池中查找有无此session
       若查找不到:
              服务器创建一个session,保存用户数据,将该session的jsessionid通过响应返回给浏览器
       若查找到:
              拿过来直接使用,将该session的jsessionid通过响应返回给浏览器

Session生命周期:
创建:第一次调用request.getsession()创建
销毁:
服务器非正常关闭
ession超时
默认时间超时:30分钟 web.xml有配置 (< session-cpnfig> < session-timeput>分钟</ session-timeput> </ session-cpnfig> )
动设置超时:setMaxInactiveInterval(int 秒) 发呆时间
手动干掉session
session.invalidate()

一个浏览器共享一个session

Cookie和Session(自用)

ServletContext:共享的数据
HttpServletRequest:一次请求的数据,存储时间没有ServletContext时间长,响应生成时就销毁
HttpSession:一次会话交互的过程

ServletContext:应用上下文

Session持久化管理:将数据写入文件,钝化。将数据读取出来,**。

URL重写:URL地址重写能够取得置于Cookie中的会话,并把会话ID附加到访问应用的各个URL最后
URL重写方法:
response.encodeURL()
response.encodeRedirectURL(“/lovobook/sucess.html” )