• Cookie和Session简介


    一、Cookie

    1.1 解释:客户端存值技术

    • 存储位置:客户端浏览器
    • 作用:存值
    • 存值类型: 只能存储字符串.

    1.2 Cookie 运行原理

    • 当浏览器输入 URL 访问服务器时会自动携带所有有效 Cookie(时间内,指定路径内,指定域名内),Tomcat 接收请求后会把 Cookie 放入到 HttpServletRequest 中,在代码中通过 request 对象获 取到 Cookie 的内容.(第一次访问时有效Cookie一般为null)
    • 服务器可以产生 Cookie 内容,需要放入到响应对象中响应 给客户端浏览器.(要求跳转类型为重定向.),客户端浏览器接收响 应内容后会把 Cookie 内容存储到指定文件夹内容.

    1.3 产生 Cookie

    @RequestMapping("demo") 
    public String goIndex(HttpServletResponse response){ 
    	Cookie c = new Cookie("key", "value"); 
    	//1. 默认实现和 HttpSession 相同. 
    	//设置 cookie 存活时间,单位秒 
    	c.setMaxAge(10); 
    	//2. 默认存储路径为 path=/ 
    	//设置哪个目录下资源能访问 
    	c.setPath("/"); 
    	//3. 域名和当前项目的域名相同,才会携带该Cookie
    	c.setDomain(".baidu.com"); 
    	response.addCookie(c); 
    	return "redirect:/index.jsp"; 
    }
    

    1.4 获取 Cookie

    Cookie [] cs = request.getCookies(); 
    if(cs!=null){ 
    	for(Cookie c :cs){ 
    		System.out.println("key:"+c.getName()+",value:"+c.getValue()"); 
    	} 
    }else{ 
    	System.out.println("没有 cookie"); 
    }
    

    二、HttpSession 运行原理

    1. 当客户端浏览器访问服务器时,服务器接收请求后会判断请求中是 否在 Cookie 包含 JSESSIONID.
    2. 如 果 包 含 JSESSIONID 把 对 应 值 取 出 , 做 为 Key 从 全 局 Map<String,Session>对象往出取 Session 对象.
    3. 如果有对应的 key,把 Session 对象取出.根据自己业务添加操作.
    4. 如果请求对象中 JSESSIONID 在全局 Map<String,Session>没有或请 求对象中 Cookie 没有 JSESSSIONID ,会执行新建 Session 步骤
    5. Tomcat 会新建(new)一个 Sesssion 对象,同时产生一个 UUID,把 UUID 做为 Map 的 key,新建的 Session 对象做为 Value,还会把 UUID 放入到 Cookie 做为 value,value 对应的 Key 是 JSESSIONID
  • 相关阅读:
    Executors 构建线程池
    结构型模式——Bridge(未完成)
    结构型模式——Adapter
    创建型模式——Builder
    创建型模式——Abstract Factory
    Java与线程
    Java内存模型
    类加载
    Class类文件的结构
    垃圾收集器
  • 原文地址:https://www.cnblogs.com/firecode7/p/16120399.html
Copyright © 2020-2023  润新知