NO.69 状态管理-session

1.什么是Session?

服务器端为保存状态而创建的一个特殊的对象。

2.工作原理

浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将这个sessionId发送给浏览器(默认以cookie的方式发送),浏览器会将sessionId保存下来(保存在内存);当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId找到对应的session对象。

NO.69 状态管理-session_第1张图片

(3)获取session对象

1)HttpSession s =request.getSession(boolean flag);

a.flag为true时

先查看请求当中有没有sessionId,如果没有,则创建session对象;如果有sessionId,则依据该sessionId去查找对应的session对象(如果找到了,则返回,找不到,则创建一个新的session对象)。

b.flag为false时

先查看请求当中有没有sessionId,如果没有,返回null;如果有sessionId,则依据该sessionId

去查找对应的session对象(如果找到了,则返回,找不到,返回null)。

2)HttpSession s =request.getSession();等价于request.getSession(true);

(4)绑订数据相关的几个方法

session.setAttribute(String name,Object obj)

Object session.getAttribute(String name);

removeAttribute(String name);

NO.69 状态管理-session_第2张图片

代码示例:

NO.69 状态管理-session_第3张图片

(5)session超时

1)什么是session超时

服务器会将空间时间过长的session对象删除掉。

注:默认的超时时间限制是30分钟。

可以修改服务器缺省的超时时间限制30。

2)session.setMaxInactiveInterval(int seconds)

(6)删除session

session.invalidate()

3. session验证

step1.登录成功之后,在session对象上绑订一些数据,比如session.setAttribute("user",user);

step2.当用户访问需要保护的资源的时候(只有登录成功才能访问的资源)    

Object obj = session.getAttribute("user");

if(obj == null){

//没有登录

response.sendRedirect("login.jsp");

}

代码示例:

NO.69 状态管理-session_第4张图片

4. 验证码(扩展)

NO.69 状态管理-session_第5张图片

练习: 生成一个长度固定为5个字符,并且这些字符要求从(A~Z,0~9)中随机选取,比如X09BD

代码示例:

NO.69 状态管理-session_第6张图片
NO.69 状态管理-session_第7张图片

你可能感兴趣的:(NO.69 状态管理-session)