什么是session?
据我个人理解,session就是一次会话,浏览器打开到关闭就是一次会话。浏览器向服务器发送第一次请求的时候,服务器会获取一个session对象,并把sessionid以 cookie的形式发送给浏览器,浏览器将sessionid保存在缓存中, 接下来的每一次请求,浏览器都会从缓存中取sessionid发送到服务器中去找对应的session对象,所以每次请求用的都是同一个session对象。只要浏览器不关闭,不管发送多少次请求,获取的都是同一个session对象。
关于session销毁
session有两个销毁机制:
超时机制
手动销毁
当浏览器关闭的时候,缓存中的sessionid就会消失,而服务器中的session对象依然存在,它会遵循超时机制,超出规定时间就会销毁,当然还可以手动销毁,通过以下方法可进行手动销毁:
session.invalidate();
session常用的方法:
//获取session对象
HttpSession session = request.getSession(false);
//将值保存到session对象中
session.setAttribute(key,value);
//获取域中的值
session.getAttribute(key);
为什么要使用session会话呢?
因为有些请求需要登录成功之后才能够访问的,就比如,我想访问部门列表,那我得先登录才能访问,不能直接访问部门列表 ,个人觉得,session会话就是为了登录而准备的。把登录成功的信息保存在session会话中,你想访问哪些请求,首先会判断,session中有没有登录的信息,如果有,就让你访问,如果没有,就让你登录再来访问。当然,如果你的项目中如果还有很多功能,比如 员工管理,订单管理等等,这几个功能都要通过session来判断是否有登录信息才能够访问,就得写好几个判断,为了节省代码 提高代码的灵活性复用性和安全性,可使用Filter过滤器,使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。可将判断登录信息的代码放到Filter中,进行过滤,可得劲儿。