同样我们通过session对象与购物车进行类比来为大家讲解:
1.类比购物车
当你去超市购物时,你可能会推一个购物车来存放你想购买的商品。这个购物车在整个购物过程中跟随你,直到你结账。Session对象在Web应用程序中的作用类似,它用来存储用户在浏览网站时的一些信息,直到用户完成某些操作(如登录、购买商品)。
1.1创建购物车(Session)
当你进入超市时,工作人员会给你一个空的购物车。在Servlet中,当你访问一个受保护的资源时,如果没有Session,服务器会自动创建一个新的Session对象,就像给你一个空的购物车。
HttpSession session = request.getSession();
1.2向购物车添加商品(设置属性)
当你选择商品时,你会把它们放入购物车。在Servlet中,你可以使用setAttribute
方法将信息(如用户ID、购物车中的商品等)添加到Session中。
session.setAttribute("userId", "12345");
session.setAttribute("productName", "awei");
1.3查看购物车中的商品(获取属性)
当你想查看购物车中有什么商品时,你会直接看购物车。在Servlet中,你可以使用getAttribute
方法来获取Session中存储的信息。
String userId = (String) session.getAttribute("userId");
String productName = (String) session.getAttribute("productName");
1.4 从购物车中移除商品(移除属性)
如果你改变主意,不想购买某个商品了,你会从购物车中取出它。在Servlet中,你可以使用removeAttribute
方法来移除Session中的属性。
session.removeAttribute("productName");
1.5结账(使Session失效)
当你完成购物并结账后,购物车就完成了它的使命。在Servlet中,当用户完成操作(如注销)时,你可以使用invalidate
方法来使Session失效,这就像你结账后把购物车放回超市。
session.invalidate();
1.6购物车的容量(Session超时)
购物车的大小是有限的,你不能无限制地往里面放商品。同样,Session也有大小限制,并且有超时设置,如果用户在一定时间内没有活动,Session就会失效。
session.setMaxInactiveInterval(30); // 设置Session超时时间为30分钟
1.7购物车的唯一性(Session ID)
每个购物车都有一个独特的编号,这样工作人员就可以区分不同的购物车。Session对象也有一个唯一的ID,用来标识每个用户的会话。
2.session常用属性
属性 | 意义 |
id | Session的唯一标识符 |
isNew | 指示Session是否是新创建的 |
isValid | 检查Session是否有效 |
creationTime | Session的创建时间 |
lastAccessedTime | Session最后一次被访问的时间 |
maxInactiveInterval | Session超时时间(以秒为单位) |
3.session常用方法
方法 | 作用 |
getAttribute(String name) | 根据名称获取存储在Session中的属性值 |
setAttribute(String name, Object value) | 将一个对象存储在Session中,通过名称作为键 |
removeAttribute(String name) | 从Session中移除指定名称的属性 |
invalidate() | 使Session失效,清除Session中的所有属性,并使Session ID无效 |
isNewSession() | 检查Session是否是新创建的 |
setMaxInactiveInterval(int interval) | 设置Session的最大非活动时间(以秒为单位) |
getId() | 获取Session的ID |
getCreationTime() | 获取Session的创建时间 |
getLastAccessedTime() | 获取Session最后一次被访问的时间 |