文章目录
一、 session定义
1、Web应用中,会话指在一段时间内,一个用户通过浏览器与服务器之间进行的一系列的请求和响应的交互过程。
2、在一个会话中,用户可以访问该Web应用系统中包括网页在内的多种资源。
3、当用户(浏览器)向Web应用服务器发送第一次请求时,服务器会为该用户创建一个唯一标识的会话,会话一直延续到访问结束(浏览器关闭或用户长时间不访问Web应用)。
4、JSP使用session对象表示会话,即将信息保存在session对象中,方便用户在这个会话中随时获取。
二、session运行机制
当Web应用系统接收到客户端浏览器的请求时,首先检查服务器是否已经为这个客户端创建了session,即判断客户端的请求中是否包含了一个session ID(session唯一标识):
1、如果包含sessionID,则服务器就会通过sessionID找到对应的session,以确定是这个客户端访问服务器;
2、如果客户端的请求中没有sessionID,服务器会为该客户端创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端。
注意:
session中保存的对象随Tomcat服务器正常关闭(通过shutdown.bat关闭)而保存到work文件夹相应目录中(Tomcat安装根目录\work\Catalina\localhost\XXX),随Tomcat的启动而重新使用。
三、 session举例
1、建立项目与文件
在同一个项目中创建两个一样的jsp文件,代码如下所示:
index.jsp 和 demo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<%=session.getId() %>
</body>
</html>
2、第一次访问项目
当第一次访问index.jsp时,因为服务器并没有为此客户端建立连接,request中没有sessionID,response中建立一个sessionID,所以会出现以下页面:
3、再次访问项目
当再次访问index.jsp时,request中出现sessionID,如图所示:
4、访问项目中不同文件
当访问同一个项目中不同的jsp文件时,因为已经建立过session,所以当访问demo.jsp时,request中会有sessionId出现。