JavaWeb学习笔记3

一、会话跟踪技术基本概念

1-1、会话

用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应
在这里插入图片描述

1-2、会话跟踪

一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据

1-3、数据共享

HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享

1-4、实现方式:

1. 客户端会话跟踪技术:Cookie
2. 2.服务端会话跟踪技术:Session

二、Cookie 基本使用

2-1、概念

Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
在这里插入图片描述

2-2、Cookie 基本使用

  • 发送cookie

    //发送cookie
            //1.发送Cookie
            //1-1.创建Cookie对象,设置数据
            Cookie cookie = new Cookie("name", "lee");
            //1-2.发送Cookie到客户端:使用response对象
            response.addCookie(cookie);
    
  • 获取Cookie

    //2.获取Cookie
            //2-1.获取Cookie 数组
            Cookie[] cookies = request.getCookies();
            //2-2.遍历,寻找特定的cookie对象
            for (Cookie cookie:cookies)
            {
                String name = cookie.getName();
                if (name.equals("name"))
                {
                    String value = cookie.getValue();
                    System.out.println(value);
                }
                break;
            }
        }
    

三、Cookie 原理

3-1、Cookie的实现是基于HTTP协议的

  • 响应头:set-cookie
  • 请求头:cookie
    在这里插入图片描述

在这里插入图片描述

四、Cookie 使用细节

4-1、Cookie 存活时间

  • 默认情况下,Cookie 存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
  • setMaxAge(int seconds):
    • 1.设置Cookie存活时间正数:将 Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除
    • 2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
    • 3零:删除对应 Cookie
      cookie.setMaxAge(20);//亲测有效二十秒之后果真没了。
      
      亲测有效20秒之后果真没了

4-2、Cookie 存储中文

  • Cookie 有时候不能直接存储中文

  • 如需要存储,则需要进行转码:URL编码

		String encode = URLEncoder.encode(string, StandardCharsets.UTF_8);
        String decode = URLDecoder.decode(encode, StandardCharsets.UTF_8);

五、Session 基本使用

  • 服务端会话跟踪技术:将数据保存到服务端
  • JavaEE 提供 HttpSession接口,来实现一次会话的多次请求间数据共享功能
  • 使用:
    		//1.创建session对象
            HttpSession session = request.getSession();
            //2.
            session.setAttribute("name","lee");
            -------------------------------------------
            //3.获取session对象
            HttpSession session = request.getSession();
            Object name = session.getAttribute("name");
            System.out.println(name+"在ServletSessionB");
    

六、Session 原理

  • Session是基于Cookie实现的
    Session是基于Cookie实现的,所有才能在一次会话中,不同Servlet实例的Session对象为同一个对象。
    在这里插入图片描述

七、Session 使用细节

  • session 钝化、活化:
    服务器重启后,Session中的数据是否还在?
    钝化:在服务器正常关闭后,Tomcat会自动将 Session数据写入硬盘的文件中
    活化:再次启动服务器后,从文件中加载数据到Session中
    +Seesion 销毁:
    1. 在web.xml文件中配置存在时长
    <session-config>
            <session-timeout>
                100<!--单位是分钟-->
            </session-timeout>
        </session-config>
    
    1. session.invalidate();//自我毁灭

在这里插入图片描述

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值