Session: 中文意思为“会话”。指的是客户端与服务器的一次会话。比如,我们打开一个网站,在这个网站中,我们访问了多少页面,点击了多少连接,都属于同一个会话。
一般情况下在第一个JSP页面或Servlet被装载时,由服务器自动创建一个session,在用户退出时由服务器销毁。
客户端在与服务端交互时,服务器为每个客户端新建一个session对象,并产生一个唯一的sessionID与该session对象相关联,而且这个sessionID是存放在客户端的Cookie中的,所以在交互时,不必每次都传回所有的Cookie值,只需要传回这个ID值。
在实际的工程项目中,session对象往往最为一次会话期内共享数据的容器,用户程序可以把最能标识用户的信息(用户名、密码等)存放在session对象中,便于对用户的管理。
session对象结束生命周期有几种情况:客户端关闭浏览器、session过期、调用invalidate方法是session失效。
·session对象的主要方法
1.getAttribute(String name) 获取与指定名字相关的session对象的属性值。
2.getAttribute() 获取session对象内所有属性名的集合。
3.getCreationTime() 返回session对象的创建时间。
4.getId() 返回session对象创建时JSP引擎为它设置的唯一ID号。
5.invalidate() 取消session对象,使session对象不可用。
·利用Session实现一个简单的保持登录状态和安全退出按钮
先实现一个简单的登录。像这样一个页面,现在是未登录状态。
然后登录。登录成功之后,我们如果刷新页面,结果就不在登录状态。
但是我们虽然把网页刷新了或者关闭了,但是session有缓存机制,虽然不是登录状态了,但是session中还是存在你的账号和密码。做个测试。
在servlet中打印session创建的时间。
控制台输出的时间。
然后关闭页面,再重新加载页面。
控制台的输出。
说明虽然页面被刷新或关闭了,但是我们的账号信息还是在session的缓存中。
所以如果要实现一个最简单的登录状态,我们只要在页面加载完毕后,将session中缓存的账号和密码做一个登录的判断就好了。