详细了解JSP特点之Cookie

开发 后端
本文将讲解JSP特点中的Cookie。Cookie的格式实际上是一段纯文本信息, 由服务器随着网页一起发送到客户端, 并保存在客户端硬盘中指定的目录的。

详细了解JSP特点之Cookie

大家都传说Cookie会造成严重的安全威胁什么的,其实不是这么回事情.服务器读取Cookie的时候,只能够读取到这个服务器相关的信息.而且,浏览器一般只允许存放300个Cookie,每个站点最多存放20个,而且,每个Cookie的大小现在在4K,根本不会占用多少空间.并且,Cookie是有时效性质的.例如,设置了Cookie的存活时间为1分钟,则一分钟后这个Cookie就会被浏览器删除

1.服务器可以向客户端写内容

2.只能是文本内容,且大小为4K(安全)

3.客户端可以阻止服务器写入

4.只能拿自己webapp写入的东西(安全)

5.Cookie分为两种

a.属于窗口/子窗口(放在内存中),窗口一关闭,即Cookie内容失效

b.写在本地磁盘的文本(有生命周期)

6.一个servlet/jsp设置的cookie能够被同一个路径下面或者子路径下面的servlet/jsp读到(路径=url)

(路径!=真实文件路径)

也就是说,子路径下生成的cookie,父路径不能读取

父路径生成的cookie,子路径能读取

JSP中对Cookie的操作:类型方法名方法解释

StringgetComment()返回cookie中注释,如果没有注释的话将返回空值.

StringgetDomain()返回cookie中Cookie适用的域名.使用getDomain()方法可以指示浏览器把Cookie返回给同一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始

intgetMaxAge()返回Cookie过期之前的最大时间,以秒计算。

StringgetName()返回Cookie的名字

StringgetPath()返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下的所有页面。

booleangetSecure()如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。

StringgetValue()返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。

intgetVersion()返回Cookie所遵从的协议版本。

voidsetComment(Stringpurpose)设置cookie中注释

voidsetDomain(Stringpattern)设置cookie中Cookie适用的域名

voidsetMaxAge(intexpiry)以秒计算,设置Cookie过期时间。

voidsetPath(Stringuri)指定Cookie适用的路径。

voidsetSecure(booleanflag)指出浏览器使用的安全协议,例如HTTPS或SSL。

voidsetValue(StringnewValue)cookie创建后设置一个新的值。

voidsetVersion(intv)设置Cookie所遵从的协议版本

一个简单的例子

1.写入Cookie---writecookie.jsp

  1. <%@pagecontentType="text/html;charset=ISO8859_1"> 
  2. <%  
  3. Cookie_cookie=newCookie("user_delfancom","delfan");  
  4. _cookie.setMaxAge(30*60);//设置Cookie的存活时间为30分钟  
  5. response.addCookie(_cookie);//写入客户端硬盘  
  6. out.print("写Cookie完成");  
  7. > 

2.读取Cookie.jsp---readcookie.jsp

  1. <%  
  2. Cookiecookies[]=request.getCookies();//将适用目录下所有Cookie读入并存入cookies数组中  
  3. CookiesCookie=null;  
  4. Stringsname=null;  
  5. Stringname=null;  
  6. if(cookies==null)//如果没有任何cookie  
  7. out.print("noneanycookie");  
  8. else  
  9. {  
  10. out.print(cookies.length+"  
  11. ");  
  12. for(inti=0;i{  
  13. sCookie=cookies[i];  
  14. sname=sCookie.getName();  
  15. name=sCookie.getValue();  
  16. out.println(sname+"->"+name+"  
  17. ");  
  18. }  
  19. }  
  20. > 

需要注意的两个JSP特点的问题:

1.Cookie有个适用路径的问题,就是说如果writecookie.jsp和readcookie.jsp要放在同意目录下,如果不在同一目录下,则写的时候需要设置路径,为readcookie.jsp所在的路径.

2.读入Cookie数组的时候需要判断是否为空(null),网上很多代码都没有写出这一点.

【编辑推荐】

  1. 充分使用标签功能编写JSP应用(JSTL)
  2. JSP换行问题解决办法一览
  3. 简化JSP表达式中代码
  4. 浅析JSP服务器
  5. 监视JSP中JVM可用内存
责任编辑:彭凡 来源: 赛迪网
相关推荐

2011-06-07 11:21:04

JSP隐含对象

2022-03-08 08:44:13

偏向锁Java内置锁

2021-04-13 09:07:33

InnoDB内存结构

2010-11-16 09:55:12

Oracle分区索引

2010-04-16 11:08:23

2011-07-28 10:40:40

Cocoa KVO

2021-07-22 06:08:43

SQL.js关系数据库数据库

2011-08-25 15:10:49

LUAWindows环境配置

2011-07-01 14:34:02

Thread Affinity 信号

2010-10-25 11:51:05

Oracle单行字符串

2010-10-21 15:26:35

SQL Server字

2009-06-30 10:37:56

JSP教程

2018-11-27 15:55:21

TCP通讯协议

2010-11-12 14:29:46

Sql Server创

2021-06-12 07:38:21

Linkerd 2.Service Mes微服务

2009-07-01 18:17:32

JSP处理Cookie

2009-07-07 17:37:32

JSP标签库

2009-07-07 17:30:58

JSP应用开发

2011-05-18 11:14:45

JSP

2011-06-15 12:36:58

JSPBEAN
点赞
收藏

51CTO技术栈公众号