zoukankan      html  css  js  c++  java
  • Cookie && Session

    一、Cookie

    1、Cookie
    • Cookie是服务器通知客户端保存键值对的一种技术。
    • 客户端有了Cookie后,每次请求都发送给服务器。
    • 每个Cookie的大小不能超过4kb
    2、创建Cookie
    //创建cookie对象
    Cookie cookie = new Cookie( "key","value");
    //通知客户端保存Cookie
    resp.addCookie(cookie);
    
    3、服务器获取Cookie
    Cookie[] cookies = req.getCookies();
    
    getkey()
    getValue()
    

    可以将查找Cookie的过程提取成一个Uitl方法。

    public static cookie findCookie(string name , Cookie[] cookies){
        if (name == null || cookies == null || cookies.length == 0) {
            return null;
        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())) {
                return cookie;
            }
        }
        return null;
    }
    
    
    4、修改Cookie
    // 方案一
        //1、先创建一个要修改的同名的Cookie对象
        //2、在构造器,同时赋于新的Cookie值。
        Cookie cookie = new Cookie("key1" , "newValue1");
        //3、调用response.addCookie(Cookie);通知客户端保存修改
        resp.addCookie(cookie);
    // 方案二
        //1,先查找到需要修改的Cookie对象
        Cookie cookie = CookieUtils.findCookie("key2", req.getCookies());
        if(cookie != null) {
            //2,调用setvalue()方法赋于新的cookie值。
            cookie.setvalue( "newValue2");
            //3,调用response.addcookie()通知客户端保存修改
            resp.addCookie(cookie);
        }
    

    在创建cookie之后将新值分配给cookie。如果使用二进制值,则可能需要使用BASE64编码。

    5、Cookie生命周期
    setMaxAge()  //设置最大生命周期
        //正数:指定秒数之后删除
        //负数:浏览器关闭之后删除
        // 0  :马上删除
    
    6、Cookie有效路径Path设置
    • Cookie的 path属性可以有效的过滤哪些Cookie可以发送给服务器。哪些不发。
      path属性是通过请求的地址来进行有效的过滤。

    • CookieA path-/工程路径
      CookieB path=/工程路径/abc

      http://ip;port/工程路径/a.html
      CookieA发送
      CookieB不发送

      http://ip:port/工程路径/abc/a.html
      CookieA发送
      CookieB发送

    二、Session

    1、session
    • Session是一个接口(HttpSession)。
    • Session就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。
    • 每个客户端都有自己的一个sessibn会话。
    • Session会话中,我们经常用来保存用户登录之后的信息。
    2、Session的创建和获取
    // 创建和获取session。它们的API是一样的。
    HttpSession session = request.getSession();
    	//第一次调用是:创建session会话
    	//之后调用都是:获取前面创建好的session会话对象。
    isNew(); //判断到底是不是刚创建出来的(新的)
    		//true表示刚创建
    		//false表示获取之前创建
    
    //每个会话都有一个身份证号。也就是ID值。而且这个ID是唯一的。
    getld();  //得到session的会话id值。
    
    3、Session域数据的存取
    getAttribute()
    setAttribute()
    
    4、Session生命周期
    setMaxInactiveInterval(int)  //秒为单位
        //负数,永不超时
    getMaxInactiveInterval(int)
        
    invalidate()  //使当前session会话马上超时无效
    

    Session默认的超时时长为30分钟。

    因为在Tomcat服务器的配置文件web.xml中默认有以下的配置,它就表示配置了当前Tomcat服务器下所有的session超时配置默认时长为:30分钟。

    <session-config>
    	<session-timeout>30</session-timeout>
    </session-config>
    

    Session超时指的是客户端两次请求的最大间隔时长。

    5、浏览器和Session之间关联的技术内幕
    • Session技术的底层其实是基于Cookie技术来实现的。

    image-20200916100348568

  • 相关阅读:
    spring容器与java访问权限的关系!
    Mybatis初始化过程详解
    Spring-boot 一些常用注解说明!
    JNDI + Spring 如何读取数据
    HashMap,,ConcurrentHashMap------------------浅谈!!
    spring ioc容器和spring mvc 容器--------浅谈!!
    针对xml文件做提取与写入的操作
    vim编辑器显示行号
    ubuntu双系统修复windows引导
    git基本操作
  • 原文地址:https://www.cnblogs.com/nojacky/p/13906168.html
Copyright © 2011-2022 走看看