Servlet基础知识(三)—— 会话机制Session,Session和Cookie的异同

Servlet会话机制:

  Http是一种无状态协议,它是无记忆的。也就是说,服务器不会保存用户的任何信息,当同一用户再次去访问时,服务器是不认识你的,它还是会建立新的连接。

但有时候我们需要服务器保留用户的信息,用以识别同一用户的多次访问,此时我们就要用到会话机制,它是通过容器的HttpSession的对象实现的。

  会话的创建:Servlet通过request对象获得HttpSession对象

      HttpSession session = request.getSession(); 

  会话的生命周期:

  Session是保存在服务器端内存中的,服务器会为每个用户分配存储空间用于存储它们的信息,并且为每个用户生成一个唯一标识(SessionID)用以区分不同用户,并且一般保存在客户端的Cookie中。它的特点是安全性高,但存太多session会占用服务器内存。

一个很形象的举例:

  客户(客户端用户)去一个商店(服务器端)消费,但这个商店不会记住每个每个消费者的信息(Http是无状态协议),但是对于一部分消费者可以办会员卡,商店自己存储这些会员的信息(session是存储在服务器端的),并发放给会员一张会员卡(里面有确认这个会员的SessionID)。下次客户再来消费,就可以在商店凭着会员卡上的SessionID找到同时保存在商店的你的信息。

  参考资料: http://www.cnblogs.com/kissdodog/archive/2013/02/08/2909292.html

       http://www.cnblogs.com/agilework/articles/2290240.html

 

Session和Cookie的区别:

  session保存在服务器端,所以优点是安全性高,缺点是存太多session会占用服务器内存。cookie反之。

  参考资料: http://blog.csdn.net/macsnow/article/details/6893191

  cookie:  

      新建:

    Cookie cookie = new Cookie();
    cookie.setMaxAge(60*60*24*365);
    response.addCookie(cookie);

  

             

posted @ 2014-11-26 10:31  &王先生  阅读(432)  评论(0编辑  收藏  举报