会话技术

一 会话手艺简介

会话: 一次会话中包罗多次请求和响应

一次会话: 客户端第一次给服务器发送请求 会话确立 直到有一方断开为止

功效: 在一次会话局限内的多次请求间 共享数据

方式: 客户端会话手艺Cookie 服务端会话手艺Session

 

二 Cookie

客户端会话手艺 将数据保留到客户端

1. 快速入门

a. 建立Cookie 绑定数据

  new Cookie(String name, String value)

b. 发送Cookie

  HttpServletResponse#addCookie(Cookie cookie)

c. 获取Cookie 拿到数据

  HttpServletRequest#getCookies() -> Cookie[]

2. 实现原理

基于响应头Set-Cookie和请求头Cookie实现

会话技术

3. Cookie细节

a. 可以建立多个Cookie工具 使用response多次挪用addCookie() 发送多个Cookie

b. 默认情况下 当客户端关闭后 Cookie数据被销毁 使用Cookie#setMaxAge(int expiry) 可以持久化存储 expiry=负数是默认值 expiry=0是删除Cookie信息 expiry=正数是存活时间(单元秒)

c. 在tomcat8之前 Cookie不支持中文数据 在tomcat8之后 Cookie支持中文数据 然则特殊字符照样不支持 以是建议都使用URL编码存储

d. Cookie共享问题

  1> 在一个tomcat服务器中 部署了多个web项目 默认情况下Cookie不能共享 使用Cookie#setPath(“/”) 可以共享Cookie

  2> 差别tomcat服务器间 默认情况下Cookie不能共享 使用Cookie#setDomain(“.qq.com”) 可以共享Cookie(一级域名必须相同)

4. Cookie特点

a. Cookie存储数据在客户端

b. 浏览器对于单个Cookie的巨细有限制(4kb) 以及对同一个域名下的总Cookie数目也有限制(20个)

5. Cookie功效

a. Cookie一样平常用于存储少量的不太敏感的数据

b. 在不登录的情况下 完成服务器对客户端的身份识别

 

快服务流量之争:如何在快服务中占领一席之地

三 Session

服务端会话手艺 将数据保留到服务端

1. 快速入门

a. 获取HttpSession

  HttpServletRequest#getSession() -> HttpSession

b. 使用HttpSession

  存储数据 void setAttribute(String name, Object value)

  通过键获取值 Object getAttribute(String name)

  通过键移除值 void removeAttribute(String name)

2. 实现原理

Session的实现依赖于Cookie

会话技术

3. Session细节

a. 当客户端关闭后 服务器不关闭 两次获取Session 默认情况下不是同一个 若是需要相同 可以建立Cookie(“JSESSIONID”, session.getId()) 设置最大存活时间 让Cookie持久化保留

b. 当客户端不关闭 服务器关闭后 两次获取Session 不是同一个 然则要确保数据不丢失 tomcat自动完成以下事情

  1> Session钝化: 在服务器正常关闭之前 将Session工具序列化到硬盘上

  2> Session活化: 在服务器启动后 将Session文件转化为内存中的Session工具

c. Session什么时候被销毁

  1> 服务器关闭

  2> Session#invalidate()

  3> Session默认失效时间是30分钟 可以选择性设置修改 在tomcat/conf/web.xml中 <session-config>节点下

4. Session特点

a. Session存储数据在服务端

b. Session可以存储随便类型 随便巨细的数据

5. Session功效

a. 共享数据

域工具: 一个有作用局限的工具 可以在局限内共享数据

Session域: 代表一次会话的局限

  存储数据 void setAttribute(String name, Object obj)

  通过键获取值 Object getAttribute(String name)

  通过键移除值 void removeAttribute(String name)

 

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/20435.html