热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

用JSP操作Cookie

用JSP操作Cookie

说起来,COOKIE应该是一种应用较久的技术了。早在HTML刚刚出现的时候,在每个独立的页面之间没有办法记录和标识不同的用户。后来人们就发明了COOKIE技术,当用户访问网页时,它能够在访问者的机器上创立一个文件,我们把它叫作COOKIE,写一段内容进去,来标识不同的用户。如果下次用户再访问这个网页的时候,它又能够读出这个文件里面的内容,这样网页就知道上次这个用户已经访问过该网页了。

虽然现在网页的制作技术比起几年以前已经发展了许多。不过有些时候,COOKIE还是能够帮我们很多忙的。接下来,我们就来看看,如何在写JSP文件的时候,用JSP操作COOKIE。

二、 写入COOKIE

其实用JSP操作COOKIE是非常简单的,我们来看下面一段JSP程序:

........(中间略)


<%
String COOKIEName="Sender";
COOKIE COOKIE=new COOKIE(COOKIEName, "Test_Content");
COOKIE.setMaxAge(10);
response.addCOOKIE(COOKIE);
%>
........(其他内容)


这样我们就设置了一个COOKIE,很简单吧?

我们来仔细研究一下这段代码:

  COOKIE COOKIE=new COOKIE(COOKIEName, "Test_Content");

这一行建立了一个COOKIE对象,初始化有两个参数,第一个参数COOKIEName定义了COOKIE的名字,后一个参数,也是一个字符串,定义了COOKIE的内容。也就是我们希望网页在用户的机器上标识的文件内容。

接下来一行:COOKIE.setMaxAge(10),调用了COOKIE中的setMaxAge方法,设定COOKIE在用户机器硬盘上的存活期为10秒。一个COOKIE在用户的硬盘里面存在的时间并不是无限期的,在建立COOKIE对象的时候,我们必须制定COOKIE的存活期,超过了这个存活期后,COOKIE文件就不再起作用,会被用户的浏览器自行删除。如果我们希望用户在下次访问这个页面的时候,COOKIE文件仍然有效而且可以被网页读出来的话,我们可以将COOKIE的存活期设得稍微长一些。比如COOKIE.setMaxAge(365*24*60*60)可以让COOKIE文件在一年内有效。

三、 读出COOKIE

COOKIE文件创建好后,自然还需要我们把它读出来,否则我们不是白费力气吗?接下来我们看看如何读出在用户硬盘上的COOKIE。

........(中间略)

Name value

<%
COOKIE COOKIEs[]=request.getCOOKIEs();
COOKIE sCOOKIE=null;
String svalue=null;
String sname=null;
for(int i=0;i{
sCOOKIE=COOKIEs[i];
svalue=sCOOKIE.getValue();
sname=sCOOKIE.getName();
%>

<%
}
%>

name value
<%=name%> <%=svalue%>

........(其他内容)

这一小段JSP文件可以读出用户硬盘上的所有有效的COOKIE,也就是仍然在存活期内的COOKIE文件。并用表格的形式列出每个COOKIE的名字和内容。

我们来逐行分析一下这段代码:

COOKIE COOKIEs[]=request.getCOOKIEs() 我们用request.getCOOKIEs()读出用户硬盘上的COOKIE,并将所有的COOKIE放到一个COOKIE对象数组里面。

接下来我们用一个循环语句遍历刚才建立的COOKIE对象数组,我们用sCOOKIE=COOKIEs[i]取出数组中的一个COOKIE对象,然后我们用sCOOKIE.getValue()和sCOOKIE.getName()两个方法来取得这个COOKIE的名字和内容。

通过将取出来的COOKIE的名字和内容放在字符串变量中,我们就能对其进行各种操作了。在上面的例子里,可通过循环语句的遍历,将所有COOKIE放在一张表格中进行显示。

四、 需要注意的一些问题

通过上面两个简单的例子,可以看到,用JSP进行COOKIE的操作,是非常简单的。不过我们在实际操作中还要注意一些问题:

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的内容中尽量避免使用这些字符。(karry/大众网络报)


推荐阅读
  • Lodop中特殊符号打印设计和预览样式不同的问题解析
    本文主要解析了在Lodop中使用特殊符号打印设计和预览样式不同的问题。由于调用的本机ie引擎版本可能不同,导致在不同浏览器下样式解析不同。同时,未指定文字字体和样式设置也会导致打印设计和预览的差异。文章提出了通过指定具体字体和样式来解决问题的方法,并强调了以打印预览和虚拟打印机测试为准。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 电销机器人作为一种人工智能技术载体,可以帮助企业提升电销效率并节省人工成本。然而,电销机器人市场缺乏统一的市场准入标准,产品品质良莠不齐。创业者在代理或购买电销机器人时应注意谨防用录音冒充真人语音通话以及宣传技术与实际效果不符的情况。选择电销机器人时需要考察公司资质和产品品质,尤其要关注语音识别率。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
author-avatar
手机用户2502861455
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有