JSP session 是 javax.servlet.http.HttpSession 的实例对象,主要用来访问用户数据,记录客户的连接信息。
HTTP 协议是一种无状态的协议(即不保存连接状态的协议)。每次用户向服务器发出请求,且服务器接收请求并返回响应后,该连接就被关闭了,服务器端与客户端的连接被断开。此时,服务器端不保留连接的有关信息,要想记住客户的连接信息,就用到了 session 对象。
session 对象的常用方法如下:
方法 | 说明 |
---|---|
void setAttribute(String name, Object value) | 将参数名和参数值存放在 session 对象中 |
Object getAttribute(String name) | 通过 name 返回获取相应的 value 值,如果 name 没有相应的 value 值,则返回 null |
void removeAttribute(String name) | 删除指定的 name 参数 |
Enumeration getAttributeNames() | 获取 session 对象中存储的所有参数 |
long getCreationTime() | 返回 session 对象创建的时间 |
String getId() | 获取 session 对象的 ID 值 |
boolean isNew() | 用于检查 session 对象是不是新对象,如果客户端禁用了 cookie ,则 session.isNew() 始终返回 true |
void invalidate() | 终止 session,即指定 session 对象失效 |
void setMaxInactiveInterval() | 设置 session 对象的有效时间,单位:秒 |
int getMaxInactiveInterval() | 获取 session 对象的有效时间,单位:秒 |
long getLastAccessedTime() | 获取上次访问 session 对象的时间 |
在 login.jsp 页面登录,并跳转到 index.jsp。login.jsp 代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>城东书院(www.cdsy.xyz)</title>
</head>
<body>
<h2>用户登录</h2>
<form action="index.jsp">
用户名: <input type="text" name="username" /> <br> <br>
密码: <input type="text" name="pass" /> <br> <br>
<input type="submit" value="登录" />
</form>
</body>
</html>
在 index.jsp 中,使用 session.setAttribute() 方法将用户名存储到 session 对象中,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>城东书院(www.cdsy.xyz)</title>
</head>
<body>
<%
String username = request.getParameter("username");
out.print("欢迎" + username + "登录");
session.setAttribute("sessname", username);
%>
<a href="success.jsp">跳转成功页面</a>
</body>
</html>
在 success.jsp 中,使用 session.getAttribute() 方法获取 session 对象中的用户名,并显示。success.jsp 代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>城东书院(www.cdsy.xyz)</title>
</head>
<body>
<%
String name = (String) session.getAttribute("sessname");
out.print("您好,您的用户名为:" + name);
%>
</body>
</html>
运行结果如下图所示:
如果使用的是 Tomcat 服务器,可以在 web.xml 文件中添加以下内容来设置 session 的有效时间:
<session-config>
<session-timeout>15</session-timeout>
</session-config>
这里单位是分钟,即表示 session 对象的有效时间为 15 分钟,Tomcat 默认有效时间为 30 分钟。
如果在 web.xml 中配置的是15分钟,则 getMaxInactiveInterval( ) 方法返回 900。