Session详解

session概述

  session用于记录用户的状态,指的是在一段时间内,单个客户端和web服务器的一连串相关的交互过程。

  在一个session中,客户可能会多次请求访问同一个资源,也有可能请求访问各种不同的服务器资源。

session原理

  服务器会为每一次会话分配一次session对象(由服务端创建)

  同一个浏览器发起的多次请求,同属于一次会话

  首次使用session时,服务器会自动创建session,并创建cookie存储sessionid发送给客户端

session的作用域

  session的作用域是存储数据的空间,作用范围是一次会话有效

  •一次会话是使用同一浏览器发送的多次请求,一旦浏览器关闭,则结束会话

  •可以将数据存入session中,在一次会话的任意位置进行获取

  •可以存储任何数据(基类、数组、集合、对象)

session的获取

  session已经被封装成一个类,是服务端自动创建的,我们就要通过request对象获取,每个session在创造时都带有sessionId,对于每次会话的sessionId是不同的

//1.通过request对象获取session对象
HttpSession session = request.getSession();
//2.查看sessionId
System.out.println(session.getId());

session保存数据

  我们可以通过键值对的形式,把数据保存在session里

session.setAttribute("key",value);

session获取数据

  同样的我们可以根据key来获取value

session.getAttribute("key");

session移除数据

  通过removeAttribute方法移除指定key的session数据

session.removeAttribute("key");

session和request的区别

  session和request一样,都可以设置键值对存储数据,但不同的是

  •request是请求有效,请求改变则request

  •session是会话有效,浏览器改变则session改变

session的生命周期

  •开始:第一次使用session的请求产生则创建session

  •结束:浏览器关闭、session超时、手动销毁

  设置session时限,单位是秒

session.setMaxInactiveInterval(seconds);

  销毁session,我们常在手动注销中使用

session.invalidate();

 

  

posted @ 2021-01-20 12:30  艾尔夏尔-Layton  阅读(489)  评论(0编辑  收藏  举报