今日关键词:session,cookie,JSESSIONID
1.session对象是由服务器创建的,浏览器关闭后,session对象不会马上被销毁,因为HTTP协议是无状态协议,前后端在完成请求响应后连接断了,所以后端不知道浏览器关闭了。
2.为什么一次会话中每一次请求都可以获取到对应的session?前端是否有类似什么标记的信息?原来在服务器端有一个session列表也就是Map集合,会话的第一次请求服务器会创建session对象及其对应的sessionid放到Map集合中,并且将sessionid响应给浏览器,浏览器将sessionid放到浏览器的缓存中。后续的请求,都是浏览器会将缓存中的sessionid发送给服务器,服务器获取到对应的session对象,所以都能访问到同一个请求 3.为什么关闭浏览器,会话结束?因为关闭浏览器后,浏览器缓存没了,sessionid也没了,再打开浏览器,它就不会发送sessionid,也就找不到对应的session对象了。 4.因为session对象不会因为浏览器关闭立马销毁,所以session有一种超时机制,过时自动销毁session对象。 5.session改良小小小oa项目:在用户登录成功时使用
HttpSession session = request.getSession();
session.setAttribute("username",username);
创建session对象并且向会话域中加入用户信息,这样再在登录才可以使用的servlet的service方法中进行判断,只有会话域中有用户信息才能够正常使用service方法,否则跳转到登录页面。值得一提的是在登录才可以使用的servlet的service方法中获取session对象使用的是
HttpSession session = request.getSession(false);
获取session对象,表示如果没有session对象不希望创建新的session对象。
6.Cookie:cookie就是前端保存会话状态信息的容器,以key和value的形式保存。cookie会绑定路径,等对对应的URL发送请求的时候自动携带cookie数据过去。cookie保存在浏览器上(内存或者硬盘文件)。