JavaWeb笔记——内置对象session

在这里插入图片描述
例如:在线购物时,在不同的页面间进行切换刷新浏览商品、添加购物车、在线结算,需要知道每次发送请求的是同一名用户
在这里插入图片描述
在这里插入图片描述
1:返回的是以长整型为单位的毫秒数
2:通过这唯一ID来识别当前会话
3、4是对应的

举例(用Eclipse Jee)
新建SessionTest01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 欢迎学习session内置对象</h1>
Session创建时间:<%= session.getCreationTime() %> <br>
</body>
</html>

运行结果:
在这里插入图片描述
这样子看不太直观,以下做一个简单的格式化
导入包java.util.*,java.text.*

<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 欢迎学习session内置对象</h1>
<% SimpleDateFormat sdf=new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");
Date d=new Date(session.getCreationTime());
%>
Session创建时间:<%= sdf.format(d) %> <br>
</body>
</html>

在这里插入图片描述
再看看session另两个方法的使用

<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 欢迎学习Session内置对象</h1>
<% SimpleDateFormat sdf=new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");
Date d=new Date(session.getCreationTime());
session.setAttribute("usename","fy");
%>
Session创建时间:<%= sdf.format(d) %> <br>
Session中获取的用户名:<%=session.getAttribute("usename") %> <br>
Session的ID编号:<%= session.getId() %>
</body>
</html>

可以通过session.getId()读到JSP给分配的session分配的ID编号,也可以通过session.setAttribute给某一个变量名赋值,然后通过session.getAttribute把变量名赋值读取出来
在这里插入图片描述
同一用户在不同页面切换时,靠session分配的ID编号来辨别是否是同一个用户

证明:
加一个超链接,希望通过这个超链接连接到一个新页面,如果在新页面中用session读到的ID和在SessionTest01.jsp用session读到的ID一致,就可以证明,同一个用户在不同页面进行跳转时,可以用sessionID是否为同一个来辨别是否是同一个用户

SessionTest01.jsp改为

<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 欢迎学习Session内置对象</h1>
<% SimpleDateFormat sdf=new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");
Date d=new Date(session.getCreationTime());
session.setAttribute("usename","fy");
%>
Session创建时间:<%= sdf.format(d) %> <br>
Session中获取的用户名:<%=session.getAttribute("usename") %> <br>
Session的ID编号:<%= session.getId() %> <br>
<a href="SessionTest02.jsp"> 跳转到SessionTest02.jsp</a>
</body>
</html>

新建SessionTest02.jsp

<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 欢迎学习Session内置对象</h1>

Session中获取的用户名:<%=session.getAttribute("usename") %> <br>
Session的ID编号:<%= session.getId() %> <br>

</body>
</html>

运行SessionTest01.jsp
在这里插入图片描述
点击跳转
在这里插入图片描述
ID一致

从session对象被创建,就是一个会话开始,当一个客户访问服务器的时候,在多个页面之间进行切换,服务器通过session对象来确定是同一个用户。这个会话的持续期间,就是session的持续期间。session也有生命周期。当把所有的浏览器页面关闭时,当前所创建的session对象就结束了,只要还有一个页面停留,当前session对象还会持续。

在这里插入图片描述
举例设定发呆时间:
在"fy"下一行添加

session.setMaxInactiveInterval(5);

这里设定的发呆时间是5秒,5秒不操作,再跳转到02时,已经不是原来01的session
在这里插入图片描述
在这里插入图片描述
用户名为null,说明01中的session对象已经消失了,已经没办法获取从01传递过来的用户名

session消失的方法:
1、关闭所有页面
2、通过invalidate()方法
3、通过设置发呆时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值