浏览器和Web服务器之间的交互通过HTTP协议来完成,HTTP协议是一种无状态的协议,服务器端无法保留浏览器每次与服务器的连接信息,无法判断每次连接的是否为同一客户端。为了让服务器端记住客户端的连接信息,可以使用session对象来记录每个客户端与服务器的连接信息。
客户端与服务器端的一次会话,从客户连接到服务器开始,直到与服务器断开连接为止,这之间可以访问session对象的属性和方法。session对象可以用来保存每个用户的信息,从而跟踪每个用户的操作状态。
当客户端第一次访问服务器时,JSP引擎会为客户端创建一个session对象用来保存客户端在访问各个页面期间所提交的各种信息,并且为该对象分配一个String类型的ID号。
在响应客户端请求的同时,把ID号发送到客户端的Cookie中。这样就建立了客户端与服务器端的一一对应关系,不同的客户端有不同的session,服务器可以通过不同的ID号来识别不同的客户端。
下面的实例就是通过表单将数据传递到服务器端,然后再将数据保存到session中。
此处我们省略掉创建Web项目的步骤。
首先我们创建一个login.jsp页面,页面的代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Refresh实例</title>
</head>
<body bgcolor="pink">
<center>
<form action="loginCL.jsp" method="post">
用户名: <input type="text" name="username"/> <br> <br>
密 码: <input type="password" name="password"/> <br> <br>
<input type="submit" value="提交"/>
</form>
</center>
</body>
</html>
然后创建session的处理界面loginCL.jsp,界面的代码如下
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>session实例</title>
</head>
<body>
<%
//接收用户名和密码,完成对用户的验证
String u = request.getParameter("username");
String p = request.getParameter("password");
//在session中保存用户名和密码
session.setAttribute("userName", u);
session.setAttribute("userPassword", p);
%>
您的用户名和密码已被写入session中,请<a href="context.jsp">猛击</a>查看内容
</body>
</html>
最后创建context.jsp页面用来查看session信息,界面代码如下
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Session实例</title>
</head>
<body>
<%
String uName = (String) session.getAttribute("userName");
String uPassword = (String) session.getAttribute("userPassword");
if (uName == null || uPassword == null) {
out.println("您还未登录!");
} else {
out.println("您的用户名:" + uName + "<br>");
out.println("您的密码:" + uPassword + "<br>");
}
out.println("session对象的创建时间:" + session.getCreationTime() + "毫秒<br>");
out.println("session对象ID号:" + session.getId() + "<br>");
out.println("上次方位的最后时间:" + session.getLastAccessedTime() + "毫秒<br>");
out.println("session的生存时间:" + session.getMaxInactiveInterval() + "<br>");
out.println("该session对象是否是创建的:" + session.isNew() + "<br>");
%>
</body>
</html>
启动该应用后,在浏览器地址栏中输入URL:http://localhost:8080/s001/login.jsp
打开的界面如下图所示
输入相应的用户名和密码,然后点击提交按钮后的界面显示如下图所示
然后点击页面中的超链接后界面展示如下图所示