会话跟踪-Cookie

目录

一、会话跟踪概述

预备知识

会话的概念与作用

现行常用的会话跟踪技术

阶段总结

二、Cookie

Cookie的功能与特点

Cookie的域及最大生命时间

在Servlet中创建Cookie、设置Cookie属性

​编辑在响应中设置Cookie信息

1.第一次请求:服务器将cookie放到response对象中,让浏览器保存cookie对象

2.第二次请求:浏览器会自动带Cookie对象一并发送到服务器

获取请求中的Cookie信息

课堂练习

Chrome浏览器

        Cookie的最大生命时间

阶段总结

总结


一、会话跟踪概述

预备知识

http协议无状态:它不记忆谁访问了它

会话的概念与作用

1.什么是会话
        浏览器和服务器之间的一次连续的通讯过程叫做会话。

 

 2.会话的作用
会话跟踪技术就能够实现这样的功能:

  1. 能够跟踪客户端与服务器端的交互,
  2. 保存和记忆相关的信息,
  3. 保存请求的状态信息。
  4. 解决HTTP协议的无状态的弊端

        核心:为了记住你是谁


现行常用的会话跟踪技术

1.URL方式:需要保存的信息直接追加到URL后,例如:http://127.0.0.1:8080/chapter03/viewList?pageNo=12
2.隐藏域方式:可以使用表单中的隐藏域保存相关信息, 例如:
<input type="hidden" name=“status" value=“true">
3.Cookie方式:将状态信息保存到客户端,服务器能够获得相关信息进行分析,从而生成对客户端的响应;例如简化登录功能就可以使用Cookie实现;
4.Session方式:将状态信息保存到服务器的会话对象中,通过唯一标记的ID值与客户端进行绑定使用;例如访问控制功能就可以使用Session实现.

阶段总结

1.什么是会话?
    浏览器和服务器的一次连续的通讯过程
2.会话的作用?
    1.跟踪客户端和服务器的交互
    2.保存记忆相关的信息
    3.保存请求的状态信息
    4,解决HTTP协议的无状态的弊端
3.常见的会话跟踪技术
    1.url
    2,隐藏域
    3.cookie
    4.session

二、Cookie

Cookie的功能与特点

1.什么是Cookie:Cookie是保存在客户端(浏览器)的小文本。
2.Cookie的功能:将用户活动过程中的状态信息保存在客户端。
3.Cookie的特点:
    1.Cookie在客户端保存用户的信息
    2.服务器可以得到用户的信息进行处理,跟踪用户的状态

Cookie的域及最大生命时间

1.name:cookie的名字,每个cookie都有一个名字;
2.content:cookie的值,与名字一起作为键值对形式存在;
3.domain:域,该cookie的域名,例如左图中是163.com,说明当前cookie来自163.com;
4.path:路径,访问163.com下该路径时,当前cookie将被发送;
5.Created:cookie被创建的时间;
6.Expired:cookie失效的时间;
7.最大生命时间:失效时间和创建时间的时间差,就是cookie的最大生命时间,超过该时间,cookie将失效,不再被发送到相应的域地址;

在Servlet中创建Cookie、设置Cookie属性


在响应中设置Cookie信息

如何将创建好的cookie对象保存到客户端?        response.addCookie(cookie);
作用:
    1.将Servlet创建好的Cookie对象放到response对象中。
    2.在没有设置最大生命时间的情况下.浏览器接收到Cookie对象后存储到浏览器的本地cookie缓存中,关闭浏览器缓存就没有了,cookie也没有了。
    3.如果设置了最大生命时间(如:7*24*3600)的情况下,浏览器接收到Cookie对象后存储到浏览器的本地cookie缓存和硬盘中,关闭浏览器缓存就没有了,cookie还存在,下次开启浏览器访问网站cookie还能使用。

1.第一次请求:服务器将cookie放到response对象中,让浏览器保存cookie对象

2.第二次请求:浏览器会自动带Cookie对象一并发送到服务器

package com.tjetc;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CookieAddServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //创建Cookie对象
        Cookie cookie = new Cookie("username", "jack");
        //设置cookie的声明时间为7天
        //cookie.setMaxAge(3600 * 24 * 7);//setMaxAge单位是秒
        //response响应对象添加Cookie对象,直接响应到浏览器中(将cookie保存到客户端)
        resp.addCookie(cookie);
    }
}

 

 

 

 

获取请求中的Cookie信息

当访问相同域及路径时,没有超过有效时间的cookie将自动通过请求被发送到服务器端

package com.tjetc;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class CookieGetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取write对象
        PrintWriter writer = resp.getWriter();
        //获取cookie,使用request得到浏览器发送过来的cookie
        Cookie[] cookies = req.getCookies();
        if (cookies != null) {
            //遍历cookies
            for (Cookie cookie : cookies) {
                //输出cookies的信息到页面上
                writer.println(cookie.getName() + "=" + cookie.getValue());
            }
        }
    }
}

 

 

 

 

课堂练习

1.目标
        1.使用Cookie(name,value)创建cookie
        2.将创建好的cookie对象保存到客户端
2.步骤
(1)新建web工程
(2)新建CookieServlet
(3)创建cookie
(4)将cookie保存到客户端
(5)在servlet得到cookie
(6)运行CookieServlet
(7)浏览器再次访问

Chrome浏览器

右上角的3个点---->设置---->隐私设置和安全性---->所有 Cookie 和网站数据---->localhost

Cookie的最大生命时间

1.在没有设置最大生命时间的情况下
浏览器接收到Cookie对象后存储到浏览器的本地cookie缓存中,关闭浏览器缓存就没有了,cookie也没有了。关闭浏览器,关闭服务器重启


2.如果设置了最大生命时间(如:7*24*3600)的情况下

浏览器接收到Cookie对象后存储到浏览器的本地cookie缓存和硬盘中,关闭浏览器缓存就没有了,cookie还存在,下次开启浏览器访问网站时cookie还能使用.

//设置cookie的声明时间为7天
cookie.setMaxAge(3600 * 24 * 7);//setMaxAge单位是秒

 关闭浏览器,重新打开浏览器,cookie依然存在.

这时我们发请求,cookie会自动发送

修改系统时间7天以后,关闭浏览器,重新启动,重新访问servlet,会重新生成Cookie对象


阶段总结

1.Cookie有什么作用?
        保存在客户端的小文本,用来跟踪用户的状态信息
2.Servlet规范中的Cookie类有哪些方法?
       1.new Cookie(name,value) 创建cookie对象
       2.cookie.setMaxAge(多少秒) 设置cookie的最大生命时间
       3.cookie.setValue(name) 设置cookie的值
       4.cookie.setDomain(name) 设置域名
3.如何将Cookie保存到客户端?
        response.addCookie(cookie);
4.如何获取Cookie?
        Cookie[] cookies=request.getCookies();

总结


1.什么是会话?
    浏览器和服务器的一次连续的通讯过程
2.会话的作用?
    1.跟踪客户端和服务器的交互
    2.保存记忆先关的信息
    3.保存请求的专挑信息
    4,解决HTTP协议的无状态的弊端
3.常见的会话跟踪技术
    1.url
    2,隐藏域
    3.cookie
    4.session
4.什么是Cookie?
    保存在客户端的小文本
5.Cookie的功能?
    将用户活动过程中的状态信息保存在客户端
6.Cookie的特点
    1.Cookie在客户端保存用户的信息
    2.服务器可以得到cookie保存的用户信息进行处理,跟踪用户的状态
7.Cookie的域
    1.name:名字
    2.content:值
    3.domain:域
    4.path:路径
    5.Created:创建时间
    6.Expired:失效时间
    7.最大生命时间:失效时间-创建时间之差
8.Servlet创建Cookie使用的方法
    Cookie cookie=new Cookie(name,value);
9.Servlet中设置Cookie的属性
    1.setMaxAge(多少秒):设置最大生命时间
    2.setValue(name):设置cookie的值
    3.setDomain(name):设置域
10.响应添加Cookie,让浏览器保存Cookie
    response.addCookie(cookie);
11.servlet如何得到cookie
    Cookie[] cookies=request.getCookies();
12.浏览器如何查看cookie
    1.Chrome
    2.Firefox
13. 最大生命时间
    1.不设置  保存在浏览器缓存中,浏览器关闭后缓存没有了cookie也没有
    2.设置  保存在浏览器缓存和磁盘中,浏览器关闭后缓存没有了,但是cookie还有,下次启动浏览器能看到cookie.
    


版权声明:本文为weixin_45701868原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。