JavaWeb-会话跟踪技术

1.Cookie(客户端会话技术)

1.1Cookie基本使用

  • CooKie :客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
    在这里插入图片描述
  • Cookie基本使用
    1. 发送Cookie
      1. 创建Cookie对象
          Cookie cookie = new Cookie("username", "zzz");
      
      1. 发送Cookie到客户端;使用response对象2
      response.addCookie(cookie);
      
    2. 获取Cookie
      1. 获取Cookie数组 (获取客户端携带的所有的Cookie,使用Request对象)
      Cookie[] cookies = request.getCookies();  
      
      1. 遍历数组。获取每一个Cookie对象:for(Cookie cookie:cookies)
      2. 使用Cookie对象方法获取数据
      cookie.getName();
      cookie.getValue();
      
//发送Cookie  
    //1.创建Cookie对象  
    Cookie cookie = new Cookie("username", "zzz");  
  
    //2.发送Cookie.response  
    response.addCookie(cookie);
//获取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;  
        }  
  
  
  
    }

1.2Cookie原理

  • Cookie的实现是基于HTTP协议的
    • 响应头:set-cookie(发送的时候)
    • 请求头:cookie
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

1.3Cookie使用细节

1.3.1Cookie存活时间

  • 默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
  • setMaxAge(int seconds):设置Cookie存活时间
    1.正数:将Cookie写入浏览器所在的电脑硬盘,持久化存储,到时间自动删除
    2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
    3.零:删除对应Cookie
//发送Cookie  
    //1.创建Cookie对象  
    Cookie cookie = new Cookie("username", "zzz");  
    //设置Cookie存活时间 1周7天(秒)  
    cookie.setMaxAge(60*60*24*7);  
    //2.发送Cookie.response  
    response.addCookie(cookie);

在这里插入图片描述

1.3.2Cookie存储中文

  • Cookie默认不允许存储中文
  • 如果需要存储,则需要进行转码:URL编码
//URL解析  =>value代表中文字符串
value = URLEncoder.encode(value, "UTF-8");
//解码
URLDecoder.decode(value,"UTF-8");

2.Session(服务端会话技术)

2.1 Session基本使用

  • 服务端会话跟踪技术:将数据保存到服务端

  • JavaEE提供HttpSession接口,来实现一次会话的多次请求见数据共享功能

  • 使用:

    1. 获取Session对象
    //存储到Sessuin中  
        //1.获取Session对象  
    		HttpSession session = request.getSession();  
    	//2.存储诗句  
    		session.setAttribute("username","zs");
    
    1. session对象功能:
    //获取Session数据  
    	//1.获取Session对象  
    	HttpSession session = request.getSession();  
    	  
    	//2.存储数据  
    	Object username = session.getAttribute("username");  
    	System.out.println(username);
    

2.2 Session原理

  • Session是基于Cookie实现的
  • F12开发者模式查看
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.3 Session使用细节

  • Session钝化、活化:
    • 服务器重启后,Session中的数据依旧存在
    • 钝化:在服务器正常关闭后,Tomcat会自动将Session写入硬盘的文件中
    • 活化:再次启动服务器后,从文件中加载数据到Session中
  • Session销毁:
    • 默认情况下,无操作,30分钟自动销毁
      <session-config>-->
    	  <session-timeout>100</session-timeout>//这里设置的是100分钟
     </session-config>
    
    • 调用Session对象的invalidate()方法

3.小结

  • Cookie和Session都是来完成一次会话内多次请求间的数据共享的
  • 区别
会话技术CookieSession
存储位置数据存储在客户端数据存储在服务端
安全性不安全安全
数据大小限制最大3KB无大小限制
存储时间可长期存储默认30分钟,可修改默认值
服务器性能不占用服务器资源占用服务器资源

选择会话技术可以根据Cookie和Session之间的区别来选择

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值