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