标签:
what‘s HttpSession 在开发中,需要对用户的一些数据进行保存,例如用户登录保存登录用户信息,当然通过Cookie的方式也可以实现,然而这种方式并不可靠,现在很多工具都可以修改Cookie的内容,那怎么办呢?在现实生活中也有许多这样的例子,例如点餐,先交钱再给你一张小票作为凭证,通过这张凭证将你点的菜给你而不是给其他人。。HttpSession也是基于这种方式实现的,以基于cookie的形式来实现,但不过分的依赖cookie从而避免产生漏洞 当用户初始访问的时候,服务只为其分配了唯一ID凭证,并通过Cookie的方式将其保存到客户端,在这期间如果不需要对session进行操作,如登录。。等,那么将不会去创建这个session对象,如果需要,则需要通过HttpServletRequest.getSession()来获取HttpSession对象,而这时Servlet容器将会根据ID去查找是否存在HttpSession对象,如果有则返回,如果没有则创建。如果客户端禁用cookie,那么Id值无法保存到客户端中,那样也无法创建Session,而要解决这个问题,只能显式的重写URL,将id值写入URL中 HttpSession对象有了,那么什么时候该session会失效呢? 当客户端关闭浏览器的时候是不是Session也跟着失效了呢? 其实不然,客户端的关闭,也只是将带有ID值的Cookie给销毁了,然而服务端并不知道。所以该Session也将会一直处于容器中,等待着被调用,然而调用它的唯一ID凭证已经被浏览器给销毁了,直到到达指定的时间周期就被直接销毁了。 所以在考虑用session来保存用户信息,要考虑session的生命周期,不可以过长。尤其是在高访问的情形下,即便用户关闭了浏览器但是session也还在占用容器空间。 但是也不可以太过于短。标签:
原文地址:http://www.cnblogs.com/lijinfengblog/p/5359242.html