您的位置:首页 > Web前端 > JavaScript

Jsp基础之session

2015-08-31 23:21 716 查看
session表示客户端与服务器的一次会话。web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间,从定义中可以看到,session实际上是一个特定的时间概念。
我们通过代码来了解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分钟
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: