重新认识session对象
什么是session对象?
session对象用来保存在每个用户会话期间需要保存的数据信息,这样就方便会话期间处理程序,如可以用session变量记住用户名,以后不必再其他网页中重复输入。session对象的信息保存在服务器端中,但session ID保存在客户机的Cookies中。由于每个客户端与服务器会话的ID不同,因此服务器通过这个ID来区分不同的用户。当用户关闭某个Web服务器上的所有网页时,此服务器与客户机的session对象及其变量会自动消失。
以前写程序,测试时教师与学生在同一个浏览器中登录,发现使用session对象来记住用户身份会乱掉,比如学生先登录,通过session.setAttribute("user_role", "student"), 然后教师登录, session.setAttribute("user_role", teacher), 然后在学生页面获取session对象,session.getAttribute("user_role"),发现这是user_role的值变为"teacher"。当时我认为session对象在不同的用户之间是共享的。然而,在实际的系统中,教师与学生是不可能在同一个浏览器中登录的,因为通过session记住用户名之后,当用户在同一个浏览器中打开新的页面进入系统时,会以当前服务器端保存的session信息自动登录系统,也就是一个浏览器中只能一种用户身份登录。所以session共享是不可能存在的问题。
2020年2月12日 17:24