一、我们知道,Http是一种无状态协议。也就是说,客户端在浏览器服务器上的不同页面时,每次请求获得相应完成后服务器和客户端的Socket链接会关闭。但是在不同页面之间,我们往往需要交换信息,这就需要我们对用户的会话进行跟踪(Session机制)。
这样服务器将唯一的会话 ID 分配给客户端以跟踪用户。ID由服务器产生,不同的服务器的会话ID完全不同。
二、会话的创建。
HttpServletRequest 的 getSession() 方法用于创建会话,其语法如下:
public HttpSession getSession();
public HttpSession getSession(boolean value);
如果没有与当前请求关联的会话,则 getSession() 方法用于创建会话。
如果布尔值为 true 且当前没有与请求关联的会话,则使用 getSession(boolean value) 创建会话。如果布尔值为 false,如果没有与当前请求关联的会话,返回null。
三、Servlet 通信方法
q Servlet 访问网络资源以满足客户端请求
q Servlet 使用 RequestDispatcher 接口的 forward() 和include() 方法访问网络资源, RequestDispatcher 对象由servlet容器创建
将请求从一个 Servlet 转送到同一个服务器上的另一个 Servlet,称为转发请求。
在一个 Servlet 中包含另一个 Servlet 的内容,称为包含。
四、Servlet 上下文(ServletContext)
1、Servlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletContext对象。可以把ServletContext看成是一个Web应用的服务器端组件的共享内存。在ServletContext中可以存放共享数据,它提供了读取或设置共享数据的方法
2、 setAttribute(String name,Object obj):把对象和属性邦定
3、 getAttribute(String name):根据属性取会邦定的对象
4、 removeAttribute(String name):根据指定的属性明删除属性
5、 将所有 Servlet 所共有的属性和资源存储于 ServletContext 接口对象。
五、生命周期
1、Request中的数据,仅在一个请求应答中流程有效。
2、Session中的数据对应客户机的浏览器进程,即浏览器不关闭,服务器Session中的数据就有效。
3、Context/application中的数据,只要web服务器不关闭,就一直存在。