《java小技巧:关于jsp中cookie的操作》由会员分享,可在线阅读,更多相关《java小技巧:关于jsp中cookie的操作(4页珍藏版)》请在金锄头文库上搜索。
1、一、一、 前言前言 说起来,Cookie 应该是一种应用较久的技术了。早在 HTML 刚刚出现的时候,在每个 独立的页面之间没有办法记录和标识不同的用户。后来人们就发明了 Cookie 技术,当用户 访问网页时,它能够在访问者的机器上创立一个文件,我们把它叫作 Cookie,写一段内容 进去,来标识不同的用户。如果下次用户再访问这个网页的时候,它又能够读出这个文件 里面的内容,这样网页就知道上次这个用户已经访问过该网页了。虽然现在网页的制作技术比起几年以前已经发展了许多。不过有些时候,Cookie 还是 能够帮我们很多忙的。接下来,我们就来看看,如何在写 JSP 文件的时候,用 JSP 操作C
2、ookie.二、二、 写入写入 CookieCookie其实用 JSP 操作 Cookie 是非常简单的,我们来看下面一段 JSP 程序:(中间略)(其他内容)这样我们就设置了一个 Cookie,很简单吧?我们来仔细研究一下这段代码:Cookie cookie=new Cookie(cookieName, “Test_Content“);这一行建立了一个 Cookie 对象,初始化有两个参数,第一个参数 cookieName 定义了 Cookie 的名字,后一个参数,也是一个字符串,定义了 Cookie 的内容。也就是我们希望 网页在用户的机器上标识的文件内容。接下来一行:cookie.set
3、MaxAge(10),调用了 Cookie 中的 setMaxAge 方法,设定 Cookie 在用户机器硬盘上的存活期为 10 秒。一个 Cookie 在用户的硬盘里面存在的时间并 不是无限期的,在建立 Cookie 对象的时候,我们必须制定 Cookie 的存活期,超过了这个 存活期后,Cookie 文件就不再起作用,会被用户的浏览器自行删除。如果我们希望用户在 下次访问这个页面的时候,Cookie 文件仍然有效而且可以被网页读出来的话,我们可以将 Cookie 的存活期设得稍微长一些。比如 cookie.setMaxAge(365*24*60*60)可以让 Cookie 文件在一年内有效
4、。三、三、 读出读出 CookieCookieCookie 文件创建好后,自然还需要我们把它读出来,否则我们不是白费力气吗?接下 来我们看看如何读出在用户硬盘上的 Cookie.(中间略)Namevalue (其他内容)这一小段 JSP 文件可以读出用户硬盘上的所有有效的 Cookie,也就是仍然在存活期内 的 Cookie 文件。并用表格的形式列出每个 Cookie 的名字和内容。我们来逐行分析一下这段代码:Cookie cookies=request.getCookies() 我们用 request.getCookies()读出用 户硬盘上的 Cookie,并将所有的 Cookie 放到一
5、个 cookie 对象数组里面。接下来我们用一个循环语句遍历刚才建立的 Cookie 对象数组,我们用 sCookie=cookiesi取出数组中的一个 Cookie 对象,然后我们用 sCookie.getValue() 和 sCookie.getName()两个方法来取得这个 Cookie 的名字和内容。通过将取出来的 Cookie 的名字和内容放在字符串变量中,我们就能对其进行各种操作 了。在上面的例子里,可通过循环语句的遍历,将所有 Cookie 放在一张表格中进行显示。四、四、 需要注意的一些问题需要注意的一些问题通过上面两个简单的例子,可以看到,用 JSP 进行 Cookie 的操
6、作,是非常简单的。不 过我们在实际操作中还要注意一些问题:1. Cookie 的兼容性问题Cookie 的格式有 2 个不同的版本,第一个版本,我们称为 Cookie Version 0,是最初 由 Netscape 公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据 RFC 2109 文档制定的。为了确保兼容性,JAVA 规定,前面所提到的涉及Cookie 的操作都是针对旧版本的 Cookie 进行的。而新版本的 Cookie 目前还不被 Javax.servlet.http.Cookie 包所支持。2. Cookie 的内容同样的 Cookie 的内容的字符限制针对不同的 Cookie 版本也有不同。在 Cookie Version 0 中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双 引号,斜杠,问号,符号,冒号,分号都不能作为 Cookie 的内容。这也就是为什么我们 在例子中设定 Cookie 的内容为“Test_Content”的原因。虽然在 Cookie Version 1 规定中放宽了限制,可以使用这些字符,但是考虑到新版本 的 Cookie 规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在 Cookie 的内容中尽量避免使用这些字符。