会话管理

HTTP是一种“无状态”协议,这意味着每次客户端打开一个网页时,都建立一个单独的连接到Web服务器,服务器不会保留之前客户端请求的任何记录。但是对许多Web应用而言,服务器需要记录客户端与服务器之间的一系列请求及响应等特定信息。因此引入了会话管理。

从特定用户端到服务器的一系列请求称为会话(session)。一个会话是由客户端在一次浏览过程中发出的所有HTTP请求组成的。记录会话的技术被称为会话跟踪。会话跟踪需要唯一的表识每一个会话。有以下三种方式来维持Web客户端和Web服务器之间的会话:Cookie、URL重写、隐藏表单域。另外,Servlet还提供了HTTPSession接口来进行会话跟踪。

cookie:

Cookie是存储在客户端计算机上的文本文件,并保留各种跟踪信息。首先,服务器脚本向浏览器发送一组Cookie(如姓名、年龄等)。然后,浏览器将这些信息存储在本地计算机上。当再向Web服务器发送请求时,浏览器会把这些Cookie信息发送到服务器,使服务器根据它们来识别用户。

在Servlet中设置Cookie步骤:

    创建cookie对象:
    Cookie cookie = new Cookie("key","value");
    设置最大生存周期:
    cookie.setMaxAge();
    发送Cookie到HTTP响应头:
    response.addCookie(cookie);

URL重写:

URL重写在URL地址后面增加一个包含会话信息的字符串来记录会话信息。URL地址与会话信息字符串之间用“?”分隔,多个参数之间用“&”分隔,URL重写在浏览器不支持Cookie时能够更好地维持会话

隐藏表单域:

可以在表单里增加一个hidden类型的隐藏字段以及一个唯一的会话ID,例如:

    

这种方式只在表单被提交时才有效,在单击超文本链接是无效。

HTTPSession接口:

可以通过调用HttpServletRequest的公共方法getSession()来获取HttpSession对象,例如:

    HttpSession session = request.getSession();

需要在向客户端发送任何文档内容之前调用request.getSession().HttpSession对象中常用的几个重要的方法:
getAttribute、setAttribute、removeAttribute、getAttributeNames等

你可能感兴趣的:(会话管理)