安全中国首页 > 编程中心 > JSP编程
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

JSP的内置对象——使用Cookie(response对象)

更新时间:2008-7-1 10:22:51
责任编辑:ShellExp
热 点:

  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)发送。

  getValue()/setValue():获取/设置Cookie的值。如前所述,名称和值实际上是程序员始终关心的两个方面。不过也有一些例外情况,比如把名称作为逻辑标记(也就是说,如果该名称存在,则表示true)。

  getVersion()/setVersion():获取/设置Cookie所遵从的协议版本。默认版本0(遵从原先的Netscape规范);版本1遵从RFC 2109,但尚未得到广泛的支持。

  3.将Cookie加入HTTP头中

  可将addCookie()方法加入到Set-Cookie应答头。如下所示:
  Cookie usernameCookie = new Cookie("username", "dzycsai");
  response.addCookie(userCookie);

  4.读取Cookie

  从客户端读取Cookie时调用的是request对象的getCookies()方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后,一般是用循环语句访问其中的各个元素,并调用getName()检查各个Cookie的名字,直至找到目标Cookie为止;然后对这个目标Cookie调用getValue(),根据获得的结果进行其他处理。

  5.Cookie工具函数

  用request对象的getCookies()方法得到一个Cookie对象的数组,要找到指定的Cookie对象比较麻烦,这时可以编写一个得到指定名称的Cookie对象值的方法,这里,提供一个这样的函数。

  String getCookieValue(Cookie[] cookieArray,
          String cookieName,String defaultValue) {
           for(int i=0; i<cookies.length;i++={
              Cookie cookie = cookies[i];
              if (cookieName.equals(cookie.getName()))
                   return(cookie.getValue());
              }
           return(defaultValue);
  }

  在此方法中,第一个参数是一个Cookies数组,可以用request.getCookies()方法得到;第二个参数cookieName,查找的Cookie对象的名称;第三个参数defaultValue是在没有找到指定的Cookie对象时返回的值。

《JSP网络编程从实践到实践》原码下载地址:http://shop.csai.cn/itbook/itbookinfo.asp?lbbh=10051575

 
学习软件编程开发技术,推荐加入以下软件编程培训班:
易语言软件编程培训班(简单易学)  Delphi软件编程培训班  VC++软件编程培训班
VB软件编程培训班  JAVA高端编程就业研发班

学习网站开发制作技术,推荐加入以下网站开发培训班:
ASP.net网站开发项目实战班  ASP语言网站建设培训班

学习网络安全入侵防护技术,推荐加入以下技术培训班:
大型网络安全入侵防护班  网站脚本程序全方位安全检测班

学习网络管理、网吧运营维护技术(网管),推荐加入以下培训班:
大型网吧技术管理人才特训班  Linux网络嵌入架构工程师培训班

学习专项特殊技术,推荐加入以下专项技术培训班:
软件与游戏外挂脱壳破解班(逆向工程)  赚钱王道-网赚技能培训班  Flash动画设计师就业特训班

 
相关编程
一日一文章
 
一日一软件
一日一动画