java 笔记 - 会话跟踪

image.png

一、Cookie

(1)Cookie 基本使用

image.png

发送 cookie

package com.test.web;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 发送cookie demo
@WebServlet("/servletSetCookie")
public class ServletSetCookie extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp){
        // 创建cookie对象
        Cookie cookie = new Cookie("myCookie", "123123");
        // 发送cookie
        resp.addCookie(cookie);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp){
        this.doGet(req, resp);
    }
}

获取cookie

package com.test.web;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 获取 cookie demo
@WebServlet("/servletGetCookie")
public class ServletGetCookie extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp){
        Cookie[] cookies = req.getCookies();
        for (Cookie cookie : cookies) {

            String name = cookie.getName();
            if (name.equals("myCookie")) {
                System.out.println("成功获取到之前设置的cookie " + name + ":" + cookie.getValue());
                break;
            }
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp){
        this.doGet(req, resp);
    }
}

(2)Cookie 原理

image.png

设置cookie:后端服务通过 set-cookie:username=zs 响应头来告知浏览器创建一个名为username,值为zs的 cookie
获取cookie:后端服务接收这次请求时,在请求头 cookie 里面获取的所有cookie

(3)Cookie 细节

image.png

二、Session

(1)Session 基本使用

image.png

存储 Session

package com.test.web.session;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/servletSetSession")
public class ServletSetSession extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp){
        // 获取session对象
        HttpSession session = req.getSession();
        // 设置session
        session.setAttribute("username", "张三");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp){
        this.doGet(req, resp);
    }
}

获取 Session

package com.test.web.session;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/servletGetSession")
public class ServletGetSession extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp){
        // 获取session对象
        HttpSession session = req.getSession();
        Object username = session.getAttribute("username");
        System.out.println("成功获取存储的 username:" + username);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp){
        this.doGet(req, resp);
    }
}

(2)Session 原理

Session 是基于Cookie实现的,服务器会给客户端存储一个 sessionid 的 cookie,浏览器每次请求的时候会自动带上这个 sessionid 用于区分。

image.png

(3)Session 细节

image.png

image.png

三、Cookie和Session的区别

image.png

参考:黑马java教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,420评论 11 349
  • 注:适用于 2.x 版本 1.pip 命令安装方法 pip install Django #指定版本 Django...
    华尔街的主导曲阅读 935评论 0 0
  • 1 目的 通过对主流的WEB高危漏洞表现形式和危害介绍,增强WEB应用开发人员的安全意识;以WEB应用开发安全原则...
    果汁凉茶丶阅读 4,200评论 0 0
  • Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了htt...
    雪上霜阅读 1,666评论 0 1
  • 会话跟踪技术 什么是会话?会话可简单理解为:打开浏览器 -> 访问一些服务器内容 -> 关闭浏览器,整个过程称之为...
    辽A丶孙悟空阅读 806评论 0 17