什么是会话?
- 生活中:一次电话.一次取款过程
- Web应用一次会话:一个客户端浏览器与web服务器之间连续发生的一系列请求和相应的过程
什么是会话状态?
- 会话状态是指Web服务器与浏览器在会话过程中产生的状态信息。
什么是Cookie?
引言:浏览购物网站查看不同商品时,系统会自动记录已经浏览过的商品
- Cookie是由服务器生成发送给客户端浏览器的一小段文本信息, 浏览器将其保存成某个目录下的文本文件中.
- Cookie的作用 
  - 对特定对象(客户)的追踪,如:访问系统次数,最后访问时间,停留时间等
- 统计网页浏览次数
- 记录用户登录信息
- 实现个性化服务,如针对不同的用户偏好展示不同的内容等
 
- 安全性能 
  - 容易信息泄露
 
存放位置:
Win7: C:\%userprofile%/AppData/Roaming/Microsoft/Windows/Cookies
XP: C:\Documents and Settings\用户名\Local Settings\Temporary Internet Files
Cookie的应用
- 导入包 
  -  <%@page import="javax.servlet.http.Cookie"%>
 
-  
-  创建Cookie 
  -  Cookie newCookie=new Cookie("parameter", "value");
- parameter:用于代表cookie的名称(key)
- value:用于表示当前key名称所对应的值
 
-  
- 写入Cookie 
  -  response.addCookie(newCookie)
 
-  
- 读取Cookie 
  -  request.getCookies()
 
-  
设置Cookie属性的常用方法
| 类型 | 方法名称 | 说明 | 
| void | setMaxAge(int expiry) | 设置Cookie的有效期,以秒为单位 | 
| void | setValue(String value) | 在Cookie创建后,对Cookie进行赋值 | 
| String | getName() | 获取Cookie的名称 | 
| String | getValue() | 获取Cookie的值 | 
| int | getMaxAge() | 获取Cookie的有效时间,以秒为单位 | 
用户登录成功后,将用户信息保存到Cookie中,在页面读取Cookie并显示
示例:使用Cookie保存用户名称

什么是JSP的会话
-  一个会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程 
JSP内置对象session
- session对象用来存储有关用户会话的所有信息,这些信息保存在服务器端
- session对象常用方法:
| 类型 | 方法名称 | 说明 | 
| void | setAttribute(String key,Object value) | 以key/value的形式保存对象值 | 
| Object | getAttribute(String key) | 通过key获取对象值 | 
| String | getId() | 获取session对象的编号 | 
| void | invalidate() | 设置session对象失效 | 
使用session实现访问控制
- 在控制页面获取用户请求的登录信息进行验证

在session中存放用户登录信息

如果session中不存在该用户的登录信息,转入登录页面
Cookie与session的比较
- session是在服务器端保存用户信息,Cookie是在客户端保存用户信息
- session中保存的是对象,Cookie保存的是字符串
- session随会话结束而关闭,Cookie可以长期保存在客户端
- Cookie通常用于保存不重要的用户信息,重要的信息使用session保存
JSP内置对象的范围
- 对象的范围 
  - 范围决定了JSP是否可以进行对象访问
 
- 范围的分类
| 名称 | 说明 | 
| page范围 | 在一个页面范围内有效,通过pageContext对象访问该范围内的对象 | 
| request范围 | 在一个服务器请求范围内有效,与客户端请求绑定一起 | 
| session范围 | 在一次会话范围内容有效,在会话期间与session绑定的对象皆属于该范围 | 
| application范围 | 在一个应用服务器范围内有效,当应用服务启动后即创建该对象,并向所有用户所共享 | 
内置对象
| 名称 | 作用域范围 | 说明 | 
| page | 单一JSP页面的范围 | 只能在创建对象的页面内访问,在服务器跳转后失效 pageContext.setAttribute(“name”,value);pageContext.getAttribute(“name”); | 
| request | 一次请求范围有效 | 页面跳转后,设置的内容依然被保,request.setAttribute(“name”,value);request.getAttribute(“name”); | 
| session | 一次会话有效期内 | 重定向后,也可以访问,关闭浏览器失效session.setAttribute(“name”,value);session.getAttribute(“name”); | 
| application | 整个web应用程序的生命周期内 | 关闭浏览器,重新打开,也可以访问到 | 
总结
- 会话跟踪技术
- cookie和session的区别 
  - cookie是在客户端保存信息,session是在服务器保存信息
- cookie中只能保存字符串,session中可以保存任何对象
- 保存在session中的信息,当浏览器关闭后即失效,保存在cookie中的信息可以长期存在
- 因为用户可以删除cookie,所示一般在cookie中保存一些不重要的信息,重要的信息保存在session中
 
- 对象的四种作用域范围 
  - page、request、session和application
 



















