HTTP协议是一种无状态的协议,HTTP服务器对客户的每个请求和响应都是作为一个分离的事务处理。服务器无法确定多个请求是来自相同的客户还是不同的客户。这意味着服务器不能再多个请求中维持客户的状态。
创建会话对象是服务器的主动行为。一般客户向服务器发送第一个请求的时候,
首先明确两点:
-
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);
-
jsp中指令session默认配置为true
<%@ page session="true"%>
jsp编译后的java文件包含以下代码
session = pageContext.getSession();
因此当这个jsp页面执行时,这句话就会帮你创建session了
若要禁用jsp的自动创建session,可以显式声明
<%@ page session="false"%>
综上,并不是一请求页面就会创建session