• 会话技术!


    会话技术

    实现会话跟踪技术方式:

    • 客户端会话跟踪技术:Cookie
    • 服务端会话跟踪技术:Session

    两者之间的区别:
    cookie是存储在浏览器中的
    session是存储在服务器中的

    对于cookie的操作主要分为两大类,分别是发送cookie和获取cookie

    • 发送cookie
    1. 创建cookie对象并设置数据

    Cookie cookie = new Cookie(“key”,“value”);

    1. 发送cookie到客户端:使用response对象

    response.addCookie(cookie)
    案例:
    (1)创建Maven项目cookie-demo,并在pom.xml添加依赖

    8
    8

    javax.servlet javax.servlet-api 3.1.0 provided javax.servlet.jsp jsp-api 2.2 provided jstl jstl 1.2 taglibs standard 1.1.2 org.apache.tomcat.maven tomcat7-maven-plugin 2.2

    (2)编写Servlet类,名称为AServlet

    @WebServlet(“/aServlet”)
    public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    }

    (3)在Servlet中创建Cookie对象,存入数据,发送给前端

    @WebServlet(“/aServlet”)
    public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //发送Cookie
    //1. 创建Cookie对象
    Cookie cookie = new Cookie(“username”,“zs”);
    //2. 发送Cookie,response
    response.addCookie(cookie);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
    
    • 1
    • 2
    • 3
    • 4

    }

    4)启动测试,在浏览器查看Cookie对象中的值

    访问http://localhost:8080/cookie-demo/aServlet

    chrome浏览器查看Cookie的值
    选中打开开发者工具或者 使用快捷键F12 或者 Ctrl+Shift+I

    • 获取Cookie
    • 获取客户端携带的所有Cookie,使用request对象
    Cookie[] cookies = request.getCookies();
    
    • 1
    • 遍历数组,获取每一个Cookie对象:for
    • 使用Cookie对象方法获取数据

    cookie.getName();
    cookie.getValue();

    在BServlet中使用request对象获取Cookie数组,遍历数组,从数据中获取指定名称对应的值

    @WebServlet("/bServlet")
    public class BServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取Cookie
            //1. 获取Cookie数组
            Cookie[] cookies = request.getCookies();
            //2. 遍历数组
            for (Cookie cookie : cookies) {
                //3. 获取数据
                String name = cookie.getName();
                if("username".equals(name)){
                    String value = cookie.getValue();
                    System.out.println(name+":"+value);
                    break;
                }
            }
    
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doGet(request, response);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    启动测试,在控制台打印出获取的值

    访问`http://localhost:8080/cookie-demo/bServlet

  • 相关阅读:
    Zabbix自定义脚本监控MySQL数据库
    科学计算与仿真-高斯牛顿法的非线性最小二乘问题简单介绍与应用
    LiveGBS流媒体平台GB/T28181常见问题-安全控制HTTP接口鉴权勾选流地址鉴权后401Unauthorized如何播放调用接口
    【面试题 - mysql】进阶篇 - MVCC多版本并发控制原理
    云原生核心技术之:Service Mesh 的实现—— Istio
    TiDB在线修改集群配置
    偏向锁理论太抽象,实战了解下偏向锁如何发生以及如何升级【实战篇】
    解决Jackson解析JSON时出现的Illegal Character错误
    word导出或另存为pdf图片不清晰问题解决方案
    DBCP 与 C3P0连接池
  • 原文地址:https://blog.csdn.net/qq_53037676/article/details/126120997