通信(交互)状态化及管理
1.why
????? 跨多个请求保留与客户端会话状态;状态化。
2.how
????? 2.1:隐藏字段
??????????? 2..1:作用——会话跟踪;
??????????? 2..2:原理
??????????? 2..3:特点——每个页面均动态生成才有效。
????? 2.2:cookie——服务器在处理第一次请求后给浏览器的简短文本信息,存放在客户端。
??????????? 2..1:作用——跟踪
??????????? 2..2:原理——在第一次访问后服务器后,服务器就向客户端发送存放用户信息的cookie,以后访问同一个web站点或域时浏览器就会返回cookie文本信息。
??????????? 2..3:特点——用户信息放于客户端;不安全;易丢失;
??????????? 2..4:代码
????????????????????? Cookie cookie=newCookie("cool","tiger!");1个Cookie一个键值对
????????????????????? cookie.setMaxAge(20);单位为秒;默认关闭时间为浏览器关闭。
????????????????????? response.addCookie(cookie);
????? 2.3:URL重写——客户端将一些额外的数据追加到表示会话的每一个URL地址末尾。
??????????? 2..1:作用
??????????? 2..2:原理
??????????? 2..3:特点——简单有效但繁琐;
????? 2.4:session——建立在cookie和URL重写的基础上,session对象就是服务器为客户端创建并维护用于存放客户端状态数据的对象。该对象在服务器。
????????????2..0:会话——一个浏览器窗口从打开到关闭这个期间;Cookie消失,id消失,session存在与服务器而找不到
??????????? 2..1:作用
??????????? 2..2:原理——浏览器发送请求—>服务器创建session对象和唯一ID—>发送保存id的cookie响应客户端—>再次发送带cookie的请求—>容器通过id找到session
??????????? 2..3:特点
??????????? 2..4:代码
????????????????? Httpsession session=request.getSession(FALSE);默认为FALSE没则创,有则不创。
????????????????? session.setMaxInactiveInterval(30)设为-1时永不超时
??????????????????session.setAttribute(name,value);
????????????????? session.invalidate();
??????????? 2..5:会话超时管理
?????????????????????* 设置会话超时——
?????????????????????*session对象调用inbalidate()方法。
?????????????????????*应用结束(崩溃、取消部署)<session-config>15<session-timeout></session-timeout></session-config>——以min为单位