background image

Java 教程:JSP

——

内置对象

使用 Cookie

Cookie 是服务器发送给客户端浏览器的体积较小的纯文本信息,以后当用户访问同一个
Web 服务器时,浏览器会把它们发送给服务器。通过让服务器读取原先保存在客户端的信
息,为浏览者提供一系列的方便。例如在线交易过程中标识用户身份,在安全要求不高的
场合可避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等。
  使用 Cookie 可以为用户带来方便,但在安全性要求较高的场合下,建议不要使用
Cookie。此外,浏览器中只允许存放 300 个 Cookie,每个站点最多存放 20 个 Cookie,每个
Cookie 的大小限制为 4 kB,故不必担心 Cookie 会过多地占用硬盘的空间。
  Cookie 存放在客户端,首先要新建一个 Cookie,然后设置其属性,再通过 response
对 象 的 addCookie() 方 法 将 其 放 入 客 户 端 , 获 取 Cookie 对 象 可 调 用 request 对 象 的
getcookies()方法。
  1.创建 Cookie
  调用 Cookie 对象的构造函数可以创建 Cookie,构造函数的语法格式如下:
  Cookie(String cookiename,String cookievalue)
    在 函 数 中 , 第 一 个 参 数 cookiename 是 新 建 的 Cookie 对 象 的 名 称 , 第 二 个 参 数
cookievalue 是新建的 Cookie 对象的值。
  Cookie 对象的名称和值都不能包含空白字符以及下列字符:
  [ ] ( ) = , " / ? @ :
  2.设置与读取 Cookie 属性
  在把 Cookie 加入待发送的应答头之前,可以查看或设置 Cookie 的各种属性。
  getComment()/setComment():获取/设置 Cookie 的注释。
  getDomain()/setDomain():获取/设置 Cookie 适用的域。
  使用这两个方法可以指示浏览器把 Cookie 返回给同一域内的其他服务器。注意域必
须以点开始(例如.sitename.com),非国家类的域(如.com,.edu,.gov)必须包含两个点,国
家类的域(如.com.cn,.edu.uk)必须包含三个点,一般地,Cookie 只返回给与发送它的服
务器名称完全相同的服务器。
  getMaxAge()/setMaxAge():获取/设置 Cookie 过期之前的时间,以秒计。如果不设置
该值,则 Cookie 只在当前会话内有效,即在用户关闭浏览器之前有效,而且这些 Cookie
不会保存到磁盘上。
  getName()/setName():获取/设置 Cookie 的名称。本质上,名称和值是需要程序员始终
关心的两个部分。由于 HttpServletRequest 的 getCookies 方法返回的是一个 Cookie 对象的数
组,因此通常要用循环语句来访问这个数组并查找特定名称,然后用 getValue()检查它的
值。
  getPath()/setPath():获取/设置 Cookie 适用的路径。如果不指定路径,Cookie 将返回给
当前页面所在目录及其子目录下的所有页面。这里的方法可以用来设定一些条件。例如 ,
someCookie.setPath("/"),此时服务器上的所有页面都可以接收到该 Cookie。
  getSecure()/setSecure():获取/设置一个 boolean 值,该值表示 Cookie 是否只能通过加
密的连接(即 SSL)发送。