美文网首页java学习
NO.69 状态管理-session

NO.69 状态管理-session

作者: smallnumber | 来源:发表于2017-09-14 22:35 被阅读0次

    1.什么是Session?

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

    2.工作原理

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

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

    代码示例:

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

    }

    代码示例:

    4. 验证码(扩展)

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

    代码示例:

    相关文章

      网友评论

        本文标题:NO.69 状态管理-session

        本文链接:https://www.haomeiwen.com/subject/rpdjsxtx.html