前面一篇模拟购物车实现过程,我们对HttpSession有了一定的了解。上一篇已经使用了req对象得到session对象方法和设置属性和得到属性方法。本篇来简单阅读HttpSession接口文档,重点介绍几个常用的方法。
1.为什么要学习HttpSession
1)它也是一个域对象:session servletContext request,目前学了三个域对象 2)同一个会话下,可以使一个应用的多个资源共享数据 3)cookie客户端技术,只能存字符串,HttpSession服务器端技术,它可以存对象
前面我们用cookie实现历史纪录中,存的是Book的id,是一个字符串,上一篇再session实现购物车文章中,我们存的是一个Book对象。这样来说,cookie只能存少量数据,session可以存多一些。 简单说以下cookie和session的区别:cookie存数据不安全,session安全。两个都有时间有效期,cookie默认是浏览器关闭,cookie被删除,session默认是30分钟有效期。
2.常用Session对象方法
把数据保存再HttpSession对象中,该对象也是一个域对象。 void setAttribute(String name, Object value); Object getAttribute(String name); void removeAttribute(String name); HttpSession.getId(); setMaxInactiveInterval(int interval) 设置session的存活时间 invalidate() 使此会话无效
3.代码使用getId()方法
前面文章说过,多个session保存在服务器端,服务器怎么就知道哪个session对应哪个浏览器呢?靠的就是唯一的session id,所以我们来代码中打印这个session id来看看,如果多个servlet的session id是一样,说明是同一个session对象。
全部代码参考前面一篇,在AddCart.java和ShowCart.java 分别添加以下得到session id 代码,
//拿到session id out.print(ss.getId() + "<br/>"); // showCart.java //拿到session id out.print(req.getSession().getId() + "<br/>");运行测试下
添加购物车页面session id
显示购物车页面session id
可以看到两个都是同一个session id: C4C0EF90053D6C76770EA1975BC54AF2