zoukankan      html  css  js  c++  java
  • Java开发系列-Cookie与Session会话技术

    概述

    会话技术:当用户打开浏览器的时候,访问不同的资源,直到用户将浏览器关闭,可以认为这是一次会话。会话技术产生是由于Http请求是一个无状态的协议,它不会记录上次访问的内容,用户在访过程中难免产生一些数据,通过会话技术可以将其保存起来。常见的会话技术cookie、Session。

    Cookie

    Cookie称之为浏览器端的会话技术
    Cookie是由服务端生成,通过response将cookie写会浏览区(set-cookie),保留在浏览器上,下一次访问,浏览器根据一定的规则携带不同的Cookie(通过request请求头),我们服务就可以接受Cookie。

    Cookie基本使用

    // 创建Cookie
    Cookie cookie = new Cookie("key", "value");
    // 将cookie协会浏览器
    response.addCookie(cookie);
    
    // 获取浏览器携带的Cookie 返回的是Cookie数组
    Cookie[] cookies2 = request.getCookies();
    for (Cookie cookie2 : cookies2) {
    	// 获取某个cookie的key
    	String key = cookie2.getName();
    	String value = cookie2.getValue();
    }
    
    

    由于服务端可以向客户端通过response写入多个cookie,因此通过request获取cookie返回的是Cookie数组,如果之前未向浏览器写入过cookie,获取的cookie数组返回时null值不要直接就遍历,否则造成空指针异常。

    Cookie其它API

    // 设置Cookie有效域名
    void setDomain(String str); 
    // 设置Cookie的有效时长
    void setMaxAge(int maxAge);  setMaxAge(0); --- 删除持久的Cookie
    

    Cookie注意事项

    Cookie保存的时候一个浏览器上对Cookie的个数和大小都是由限制的.
    Cookie默认不能保存中文.
    - URLEncoder.encode();
    - URLDecoder.decode();

    Session

    Session称之为服务端的会话技术
    当我们第一次访问服务器的时候,服务器会获取SessionId,如果不能获取id,则创建一个session,将您的数据保存到session中,将当前的sessionId返回给浏览器。如果能获取到id,就根据此sessionId去获取Session,如果根据id获取不到session就创建一个session,将数据保存,返回id给客户端。返回id给客户端还是基于Cookie会话技术。

    Session基本使用

    // 根据request获取session
    HttpSession session = request.getSession();
    // 往session中写入数据 key value形式
    session.setAttribute("name", "jake");
    		
    // 根据key从session获取value
    session.getAttribute("name");
    

    Session的声明周期

    Session是一个域对象,保存在服务端,第一次调用request.getSession()创建。销毁三种情况

    • session过期:默认过期时间30分钟 web.xml默认配置
    • 非正常关闭服务器:(正常关闭服务器 序列化到硬盘)
    • 调用session.invalidate()
  • 相关阅读:
    机器码call和jmp地址的计算
    linux下系统对于sigsegv错误时的处理
    elf文件中的.plt .rel.dyn .rel.plt .got .got.plt的关系
    docker随谈
    nginx性能优化技巧
    ubuntu安装php常见错误集锦
    ubuntu php5.6源码安装
    关于mysqld_safe
    ubuntu mysql5.7源码安装
    linux下nginx模块开发入门
  • 原文地址:https://www.cnblogs.com/CoderHong/p/9484578.html
Copyright © 2011-2022 走看看