每个用户分别对应不同的`session,都保存在服务器。
(在不同页面切换,服务器知道是同一人,是session;在一家公司的几个网站里切换,只登陆一次,其他的也可以进去,比如登录淘宝就可以进天猫,用的是CAS单点登录。不知道这两个原理上有什么类似)
<% SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date d = new Date(session.getCreationTime()); session.setAttribute("username", "admin"); session.setAttribute("password", "123456"); session.setAttribute("age", 20); //设置当前session最大生成期限单位是秒 //session.setMaxInactiveInterval(10);//10秒钟 //session.invalidate();//销毁当前会话。 %> Session创建时间:<%=sdf.format(d)%><br> Session的ID编号:<%=session.getId()%><BR> 从Session中获取用户名:<%=session.getAttribute("username") %><br> <% //session.invalidate();//销毁当前会话 %> <a href="session_page2.jsp" target="_blank">跳转到Session_page2.jsp</a>//跳转也是同一个会话。
生命周期
修改后启动项目:
打开tomcat后台(换个页面,这个page1的页面不要关闭)。进入管理员(要先设置管理员的账户、密码):
项目有一个会话,点击这个 1 可以查看会话:
关闭再打开,是一次新的会话,进入管理页面,可以看到,原来的会话还在(在等待超时):
设置超时时间:
这个web.xml是项目的,不是tomcat的:
去查看:
等了一分钟,页面的值并没有变,不知道为什么。在myeclipse里把程序停止再启动,再试试
等一分钟后,值就变了,说明一分钟后的会话消失了。
为什么要重启一个服务器才行?如果不重启,修改代码后只保存,难道就没有变吗?应该是修改jsp的代码才会离开有效,其他的代码需要重启项目才行。
原来的过期时间设置是1分钟,修改为两分钟,只保存,刷新页面,不重启tomcat,试试:
过去一分钟,没有变:
两分钟后,会话变了:
说明设置是有效的,并不需要重启tomcat。为什么上一次需要???不明白