我们通过代码来了解session中的一些常用的方法:
创建一个jsp文件,就明名为 session_page1.jsp
<span style="font-size:18px;"><body>
<h1>session内置对象</h1>
<hr>
<%
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//设置日期格式
Date d = new Date(session.getCreationTime());// session的创建时间
session.setAttribute("username", "admin"); //使用指定名称将对象绑定到此会话 相当于键值是“username” 值是“admin”
session.setAttribute("password", "123456");
session.setAttribute("age", 20);
//设置当前session最大生成期限单位是秒
//session.setMaxInactiveInterval(10);//10秒钟
%>
Session创建时间:<%=sdf.format(d)%><br>
Session的ID编号:<%=session.getId()%><BR> //返回session创建时JSP引擎为它设的唯一ID号
从Session中获取用户名:<%=session.getAttribute("username") %><br></span>
在body里面 我们调用了
session.getCreationTime()方法,其作用是获取session的创建时间
session.getId()f方法,返回session创建时JSP引擎为它设的唯一ID号
session.setAttribute("username", "admin")使用指定名称将对象绑定到此会话 相当于键值是“username” 值是“admin”
session.getAttribute("username") 方法是从Session中获取用户名
测试结果为:
Session创建时间:2015年08月31日 23:26:24
Session的ID编号:C42C36F8ADD3D795CFB268E00B5BA288
Session中获取用户名:admin
我们再次创建session_page2.jsp
首先我们再session_page1.jsp中写一个超链接 ,在body中添加
<a href="session_page2.jsp" target="_blank">跳转到Session_page2.jsp</a>
然后在session_page2.jsp中body中写入如下代码:
<span style="font-size:18px;"><body>
<h1>session内置对象</h1>
<hr>
Session的ID编号:<%=session.getId()%><BR>
从Session中获取用户名:<%=session.getAttribute("username") %><br>
Session中保存的属性有:<%
String[] names =session.getValueNames();//返回此session可用属性的数组
for(int i=0;i<names.length;i++)
{
out.println(names[i]+" ");
}
%> <br>
</body></span>
在上述代码中我们再次使用了 session.getId()f方法,获取到session唯一ID值,
也用session.getAttribute("username") 方法获取用户名
刷新session_page1.jsp页面 点击超链接,跳转到session_page2.jsp
可以看到测试结果为:
Session的ID编号:C42C36F8ADD3D795CFB268E00B5BA288
从Session中获取用户名:admin
Session中保存的属性有:password age username
说明在浏览器没有关闭之前,session 是用一个值,说明是同一个会话。
另外代码中的session.getValueNames()方法返回此session可用属性的数组,从测试结果中可以看到打印的属性。
还有一个方法:
设置当前session最大生成期限,单位是秒
session.setMaxInactiveInterval(10);//表示超过10秒钟后,session会销毁
当在session_page1.jsp中写入这个代码后,得到Session的ID编号:C42C36F8ADD3D795CFB268E00B5BA288
停留10秒钟后,点击超链接,到session_page2.jsp得到Session的ID编号85AE163BD29303B2B906823C310C99D7
说明创建了一个新的session。并且不能再获取到session中的属性,测试如下:
从Session中获取用户名:null
Session中保存的属性有:
session的生命周期:
1.通过超链接打开的页面属于同一次会话。
2.只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时,属于同一次会话。
3.本次会话的所有页面全都关闭的情况下,再重新访问某个JSp或Servlet时会创建新的会话(注意:原有的会话仍存在,但只是这个旧的sessionId仍存在于服务端,但再也没有客户端会携带它然后交予服务器端校验)
销毁:
session.invalidate();
设置超时时间,默认30分钟