介绍
- 由于HTTP协议是无状态协议,会话跟踪技术可以很好的解决这个问题。
session对象
Web应用中,会话指在一段时间内,一个用户通过浏览器与服务器之间进行的一系列的请求和响应的交互过程。在一个会话中,用户可以访问该Web应用系统中包括网页在内的多种资源。
当用户(浏览器)向Web应用服务器发送第一次请求时,服务器会为该用户创建一个唯一标识的会话,会话一直延续到访问结束(浏览器关闭或用户长时间不访问Web应用)。JSP使用session对象表示会话,即将信息保存在session对象中,方便用户在这个会话中随时获取。
session运行机制
当Web应用系统接收到客户端浏览器的请求时,首先检查服务器是否已经为这个客户端创建了session,即判断客户端的请求中是否包含了一个session ID(session唯一标识),如果包含sessionID,则服务器就会通过sessionID找到对应的session,以确定是这个客户端访问服务器;而如果客户端的请求中没有sessionID,服务器会为该客户端创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端。
e.g.
index.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>
<% request.getSession().setAttribute("key","session");%>
<%=session.getId() %>
<a href="./b.jsp">点击</a>
</body>
</html>
b.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>
<%=session.getAttribute("key")%>
<%=session.getId() %>
</body>
</html>
点击之后;
刷新之后sessionID并没有改变
把浏览器关闭之后再打开;
再次点击;
可得,刷新网页不会改变sessionId的值。
即session存在整个会话中,但是如果是另外一个会话则不为不同的session对象。