我爱编程JavaWeb学习程序员

Session对象

2018-06-06  本文已影响3人  幻影翔

Session技术核心

HttpSession类:用于保存会话数据,保存在服务器端(内存)

  1)创建或得到session对象
      HttpSession getSession()  
      HttpSession getSession(boolean create)  
  2)设置session对象
      void setMaxInactiveInterval(int interval)  : 设置session的有效时间
      void invalidate()     : 销毁session对象
      String getId()  : 得到session编号
  3)保存会话数据到session对象
      void setAttribute(String name, Object value)  : 保存数据
      Object getAttribute(String name)  : 获取数据
      void removeAttribute(String name) : 清除数据

服务器会给访问的浏览器分配唯一标识(小票)

HttpSession session = request.getSession();

1)第一次访问创建session对象,给session对象分配一个唯一的ID,叫JSESSIONID
        new HttpSession();
2)把JSESSIONID作为Cookie的值发送给浏览器保存
        Cookie cookie = new Cookie("JSESSIONID", sessionID);
                response.addCookie(cookie);
3)第二次访问的时候,浏览器带着JSESSIONID的cookie访问服务器
4)服务器得到JSESSIONID,在服务器的内存中搜索是否存放对应编号的session对象。
                if(找到){
                    return map.get(sessionID);
                }
                Map<String,HttpSession>
                <"s001", s1>
                <"s001,"s2>
5)如果找到对应编号的session对象,直接返回该对象
6)如果找不到对应编号的session对象,创建新的session对象,继续走1的流程

结论:通过JSESSION的cookie值在服务器找session对象!!!!!

总结:

1)会话管理: 浏览器和服务器会话过程中的产生的会话数据的管理。

2)Cookie技术:
        new Cookie("name","value")
        response.addCookie(coookie)
        request.getCookies()
3)Session技术
        request.getSession();
                    
        setAttrbute("name","会话数据");
        getAttribute("会话数据")

登录案例

1、登录页面login.html 登入失败页面fail.html
2、登入处理LoginServlet
3、主页跳转IndexServlet
4、退出处理logoutServlet

细节

登入处理

接受页面参数,匹配成功则登录成功,否则跳转登录失败页面,登录成功后,把用户的数据保存到session对象中(创建session对象,保存数据到session域)重定向跳转主页。

主页处理

得到session,要判断session和会话数据是否为空,空则登录失败跳转登录界面,反之显示登录成功。

退出处理

一般退出,不把session对象删除,仅删除session对象中指定的LoginName属性即可。
上一篇 下一篇

猜你喜欢

热点阅读