什么是会话跟踪技术:

类似于客户端与服务器的即时沟通桥梁.

打开浏览器访问web服务器的资源时,会话就此建立,其中无论哪一方断开,会话都会结束,反之持续建立,

在会话期间双方可以进行多次请求和响应,这整个过程叫做会话

会话跟踪技术的作用:

在识别浏览器建立会话后,通多多次的请求实现数据共享

为什么现在浏览器和服务器不支持数据共享呢?

浏览器和服务器之间使用的是HTTP请求来进行数据传输,因为http协议是无状态的,无状态的目的是为了让每次请求之间相互独立,互不影响,但是请求与请求之间独立后,就无法实现多次请求之间的数据共享

客户端会话跟踪技术:==Cookie==

服务端会话跟踪技术:==Session==

区别:==Cookie是存储在浏览器端而Session是存储在服务器端==

Cookie如何实现?

创建Cookie对象 : Cookie cookie = new Cookie("key","value");

发送Cookie到客户端 : response.addCookie(cookie);

获取客户端携带的所有Cookie : Cookie[] cookies = request.getCookies();

for遍历数组

获取数组中每个Cookie对象的值:cookie.getName()和cookie.getValue()

如何将Cookie持久化存储?

设置Cookie存活时间 : setMaxAge(int seconds)

参数 正数:写在硬盘,到时间自动删除 负数:在内存中,浏览器关闭自动删除 零:直接删除

例:setMaxAge(60*60*24*7) //七天自动删除

Cookie如何储存中文?

思路:对中文进行URL编码,输出前进行解码

value = URLEncoder.encode(value, "UTF-8"); //对中文进行URL编码

value = URLDecoder.decode(value,"UTF-8"); // 解码成中文

Session如何实现?

获取session : HttpSession session = request.getSession();

提供的功能:

存储数据到 session 域中: void setAttribute(String name, Object o)

根据 key,获取值: Object getAttribute(String name)

根据 key,删除该键值对: void removeAttribute(String name)

Session的一些注意点:

钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中

活化:再次启动服务器后,从文件中加载数据到Session中

session数据存储在服务端,服务器重启后,session数据会被保存

浏览器被关闭启动后,重新建立的连接就已经是一个全新的会话,获取的session数据也是一个新的对象

session的数据要想共享,浏览器不能关闭,所以session数据不能长期保存数据

cookie是存储在客户端,是可以长期保存

session的销毁会有两种方式:

1.默认情况下,无操作,30分钟自动销毁(可以修改)

可以在web.xml中配置实现:

<session-config>

<session-timeout>100</session-timeout>

</session-config>

  1. 在类中添加session销毁的方法

session.invalidate();

Cookie和Session的区别是什么?
  1. 存储位置:Cookie 是将数据存储在客户端,Session 将数据存储在服务端
  2. 安全性:Cookie不安全,Session安全
  3. 数据大小:Cookie最大3KB,Session无大小限制
  4. 存储时间:Cookie可以通过setMaxAge()长期存储,Session默认30分钟
  5. 服务器性能:Cookie不占服务器资源,Session占用服务器资源
Cookie和Session的应用场景分别是什么?
  1. 购物车:使用Cookie来存储
  2. 以登录用户的名称展示:使用Session来存储
  3. 记住我功能:使用Cookie来存储
  4. 验证码:使用session来存储
结论:

Cookie是用来保证用户在未登录情况下的身份识别

Session是用来保存用户登录后的数据