Session是什么时候建立的

HTTP协议是一种无状态的协议,HTTP服务器对客户的每个请求和响应都是作为一个分离的事务处理。服务器无法确定多个请求是来自相同的客户还是不同的客户。这意味着服务器不能再多个请求中维持客户的状态。

创建会话对象是服务器的主动行为。一般客户向服务器发送第一个请求的时候,

首先明确两点:

  1. request.getSession()在没有session的时候会创建session

    //如果当前没有session,则会立刻建立一个session;如果有session则返回当前session
    HttpSession session = request.getSession();
    HttpSession session = request.getSession(true);
    
    //这句话不会建立session,如果当前没有seesion建立的话,控制台输出应该是true的
    HttpSession session = request.getSession(false);
    System.out.println(session==null);
    
  2. jsp中指令session默认配置为true

    <%@ page session="true"%>
    

    jsp编译后的java文件包含以下代码

    session = pageContext.getSession();
    

    因此当这个jsp页面执行时,这句话就会帮你创建session了

    若要禁用jsp的自动创建session,可以显式声明

    <%@ page session="false"%>
    

综上,并不是一请求页面就会创建session

你可能感兴趣的:(java,服务器,tomcat)