2009-04-19读书记录:《Servlet与JSP核心编程》第八章——cookie管理

cookie就不用多说了,上网的人都知道,其优缺点也就不再讲述,只是初探一下Java Servlet的Cookie管理。以前使用C#做Cookie程序的时候,感觉很简单,很方便;接触了Java之后才真正的发现Java的强大,原来Cookie可以这样操作的!

Serlvet中的cookie操作主要就是两种:发送和接受。

 

向客户端发送cookie,此方面涉及到三个步骤:

  • 创建cookie对象——调用cookie的构造函数,给出cookie的名称和cookie的值,二者都是字符串
  • 设置最大时效——使用setMaxAge指定多长时间有效,超过此时间,浏览器会就删除
  • 将Cookie放入Http响应报头——使用response.addCookie进行最后的发送

需要注意的地方

  • 创建cookie时,不管是名称还是值都不可以包含以下字符:[]()=,"/?@:;
  • 将cookie发送到客户端程序之前,一般应该调用setMaxAge方法
  • 创建和操作Cookie对客户端没有任何影响。必须显示的调用response.addCookie将其发送到客户端

从客户端读取Cookie

要读取客户端程序发送回来的Cookie,应该执行两项任务:

  1. 调用request.getCookies,得到一个Cookie的对象数组
  2. 对数据循环,调用每个cookie的getName,直到找到感兴趣的cookie为止

关于cookie的操作我一直认为都很简单,虽然我只会使用.Net以及目前还不太成熟的Java Servlet,PHP也接触了一段时间,此部分也很容易理解。用两个小例子来说明一下Sevlet中如何使用Cookie:

1.使用Cookie检测初次访问者

首次到达此网站时,显示让用户去登录,如果曾经访问过则显示欢迎回来。很简单代码如下:

 

Cookie的属性

除了名称和值以外,cookie还有一些属性,以下整理了一些设置cookie属性的方法:

  • setComment/getComment:设置/查看cookie的注释,该注释纯粹用于信息上的,存放在服务器上,不向客户端发送
  • setDomain:防止服务器设置应用于它们的域之外的主机,如:cookie.setDomain(“.abc.com”)浏览器只会返回abc网站的Cookie
  • getDomain:取得客户端发送回来的域名
  • setMaxAge、getMaxAge:设置/取得过期时间,以秒为单位。即XX秒后此Cookie过期将被删除
  • getName:读取Cookie名称
  • setPath/getPath:设置/取得Cookie在客户端保存的物理路径
  • setSecure/getSecure:setSecure表示cokie是否只能通过加密链接SSl发送,默认为false;
  • setValue/getValue:set指定与该Cookie相关联的值,get是取到值
  • setVersion/getVersion:设置和取得遵从cookie协议的版本

总的来说Cookie的操作还是比较简单的,记得曾经有一次设计单点登录,就是采用Cookie来实现,登录过后的用户,将一些信息存放在Cookie中,其它子系统便可以判断是否有相规定的名称的Cookie存在,如果有则证明用户已经登录了,就不需要再验证。多个子网站间也可以正常跳转了!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值