一个客户端对应一个Session,而一个Session有多个Attribute,每一个Attribute有唯一的name。

编写代码证明提出的观点:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

HttpSession session = req.getSession();

PrintWriter writer = resp.getWriter();

// 给session绑定一个user对象

session.setAttribute("user", new User(1, "kongsam"));

List users = new ArrayList<>();

users.add("kongsam");

users.add("xiaoming");

users.add("xiaohong");

// 给session绑定一个list数组

session.setAttribute("list", users);

// 最后打印输出

writer.println("JSESSIONID = " + session.getId());

writer.println("object => user = " + session.getAttribute("user").toString());

for (String user : users) {

writer.println("list => user = " + user);

}

}

两个不同的浏览器就是两个不同的客户端,这两个客户端对应不同的JSESSIONID。

后端如何获取session storage里的值_User

Cookie的工作原理以及讲解请见上一篇文章。

Session如何工作


在现实生活中,当你去理发店理发时,你可以选择在前台办理一张会员卡,前台工作人员将你的基本信息和之后的消费信息等都存储到店家电脑的硬盘上,在以后消费的时候你仅凭一张会员卡就可以查询到你所有的信息和消费记录。注意,这里的你是指客户端,前台(店家)指的是服务端。

后端如何获取session storage里的值_前端_02

结合代码理解Session


SessionDemo01是用来创建一个假的数据库,并且把这个数据库存放到Session中进行保管。

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
// 创建一个假数据库
Map<String, VipUser> vipUsers = new HashMap<>();
vipUsers.put(“kongsam”, new VipUser(1, “kongsam”, “123”, 50));
vipUsers.put(“xiaoming”, new VipUser(2, “xiaoming”, “123”, 100));