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();