程序员社区

【Servlet-1】Seesion概述

  1. Cookie将会话状态保存在客户端,Session将会话状态保存早服务器端
  2. HTTPSession是一个会话级别的对象,一次会话对应一个HTTPSession对象
  3. 一次会话:用户打开一次浏览器,在浏览器上发送多次请求,直到最终关闭浏览器,表示一次完整的会话。
  4. 在会话进行过程中,web服务器一直未当前这个用户维护者一个会话对象HttpSession
  5. 在web容器中,web容器维护了大量的HTTPSession对象,在web容器中 应该有一个session列表。
  6. session的实现原理:
    打开浏览器,在浏览器上发送首次请求,服务器会创建一个HTTPSession对象,该对象代表一次会话,同时生成HTTPSession对象对应的Cookie对象,并且Cookie对象的name是JSESSIONID。服务器将Cookie的value和HttpSession对象绑定到session列表中,服务器将Cookie完整发送给浏览器客户端,浏览器客户端将Cookie保存到缓存中。只要浏览器不关闭,Cookie就不会消失,当再次发请求的时候,会自动提交缓存中的Cookie,服务器收到Cookie,会验证Cookie的name确实是:JSESSIONID,然后获取该Cookie的value,通过Cookie的value去Session列表中检索对应的HttpSession对象。
    在这里插入图片描述
  7. 浏览器关闭之后,服务器会销毁session对象吗?
    浏览器关闭之后,服务器不会关闭session对象,因为B/S架构的系统基于HTTP协议,而Http协议是一种无连接/无状态的协议。
  8. session对象什么时候被销毁?
    当很长一段时间没有用户访问该session对象,此时session对象超时,web服务器自动回收session对象。
  9. 到底什么是一次会话?
    一般描述:用户打开浏览器,在浏览器上进行一系列操作,然后关闭浏览器,表示一次会话结束。
    本质描述:session对象的创建到session对选的销毁为一次会话。
package Session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/AccesssMyselfSession")
public class AccesssMyselfSession extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String ip = request.getRemoteAddr();
        System.out.println(ip);
        HttpSession session = request.getSession();
        System.out.println(ip+"s session="+session);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【Servlet-1】Seesion概述

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区