session是会话变量,是基于单个用户的,只对单个用户有效,相当于个人邮箱。
application是全局变量,是基于整个web应用的,对所有用户有效,相当于公告栏。
两者的生命周期:
session:一般情况下,不管向服务器发送了多少次请求,只有当开始向session中存储会话状态数据时,即服务器端调用HttpServletRequest.getSession(true)这样的语句时,session才会被创建。一个常见的误解是session在有客户端访问时就被创建。session在下列情况下被删除:
a.程序调用HttpSession.invalidate();
b.距离上一次收到客户端发送的session id时间间隔超过了session的超时设置(默认是20分钟);
c.服务器进程被停止(非持久session)。
“只要关闭浏览器,由该浏览器所生成的session就会随之销毁。”这句话理解是错误的!
application:开始于向服务器发送的第一次请求,然后直到服务器关闭。