session运行机制

JSP内置对象session

session通常被翻译成“会话”。一个会话是指用户通过浏览器(客户端)与服务器之间进行的一系列的交互过程,交互期间可以包含浏览器与服务器之间的多次请求、响应。以下是几个常见的session使用情景。

(1)用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站的整个过程,就是一个session。

(2)在电子邮件应用中,从一个客户登陆到电子邮件系统开始,经过收信、写信和发信等一系列操作,直至最后退出邮件系统,整个过程为一个session。

(3)在购物网站应用中,从一个客户开始购物,到浏览商品、结算等,直至最后的结账,整个过程为一个session。

session运行机制如下:

       当用户(浏览器)向Wed应用第一次发送请求时,服务器会创建一个session对象并分配给该用户;该session对象中包含着一个唯一标识符sessionId,并且服务器会在第一次响应用户时,将此sessionId作为jsessionId保存在浏览器的Cookie对象中;这个session将一直延续到用户访问结束(浏览器关闭或用户长时间不访问Wed应用)。

      当Wed应用接收到用户的请求时,首先会检查服务器是否已经为这个用户(浏览器)创建过了session对象,具体是判断用户的请求是否包含了一个sessionId,如果包含sessionId,则服务器就会通过这个sessionId找到对应的session,以确定是这个用户在访问服务器。而如果用户的请求中没有sessionId,则服务器会为该用户创建一个新的session,并生成一个与此session对应的sessionId,然后将sessionId随着本次响应返回给用户(浏览器的Cookie对象中)。
 

<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CreateSession</title>
</head>
<body>
       <%
           session.setAttribute("dog", "小狗狗");
           response.sendRedirect("cookie.jsp");
       %>
</body>
</html>

<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
        <% 
           //获取session的值
           out.print("sessionId:   "+session.getId()+"<br/>");
           //Cookie中会默认保存一个jsessionId的名和值
           Cookie[] cookie = request.getCookies();         
           out.print(cookie[0].getName()+"   :"+cookie[0].getValue());
        %>
        
</body>
</html>

可以发现,服务器中session对象产生的sessionId的值,与客户端中Cookie对象产生的jsessionId值得内容是一样的。

猜你喜欢

转载自blog.csdn.net/weixin_42044486/article/details/84317971