JSP session对象

 
JSP session 是 javax.servlet.http.HttpSession 的实例对象,主要用来访问用户数据,记录客户的连接信息。

HTTP 协议是一种无状态的协议(即不保存连接状态的协议)。每次用户向服务器发出请求,且服务器接收请求并返回响应后,该连接就被关闭了,服务器端与客户端的连接被断开。此时,服务器端不保留连接的有关信息,要想记住客户的连接信息,就用到了 session 对象。

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.biancheng.net)</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.biancheng.net)</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.biancheng.net)</title>
</head>
<body>
    <%
        String name = (String) session.getAttribute("sessname");
        out.print("您好,您的用户名为:" + name);
    %>
</body>
</html>
运行结果如下图所示:
login.jsp
login.jsp运行结果

index.jsp运行结果
index.jsp运行结果

success.jsp运行结果
index.jsp运行结果

拓展

如果使用的是 Tomcat 服务器,可以在 web.xml 文件中添加以下内容来设置 session 的有效时间:
<session-config>
    <session-timeout>15</session-timeout>
</session-config>
这里单位是分钟,即表示 session 对象的有效时间为 15 分钟,Tomcat 默认有效时间为 30 分钟。

如果在 web.xml 中配置的是15分钟,则 getMaxInactiveInterval( ) 方法返回 900。