- 浏览: 176886 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
得牛哄哄:
楼主,我想问题下,我服务器已经搭建好了,验证可以服务器登陆成功 ...
CAS SSO 例子 笔记 (原创-梁健) -
得牛哄哄:
为什么下不了?
CAS SSO 例子 笔记 (原创-梁健) -
aa00aa00:
这个我已经配置成功了,看的视频,挺好的,其实用CAS确实挺方便 ...
CAS SSO 例子 笔记 (原创-梁健) -
ningguiixn:
单例写的不对哦亲
Singleton 单例模式很多种写法 -
liangjian103:
hesy_007 写道Nginx for windows在生产 ...
Nginx负载均衡Tomcat简单配置
一.什么是cookies?
大家都知道,浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭 与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个 缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,因此人们昵称为“小甜饼”。cookies是一种WEB服务器通过 浏览器在访问者的硬盘上存储信息的手段:Netscape Navigator使用一个名为cookies.txt本地文件保存从所有站点接收的Cookie信息;而IE浏览器把Cookie信息保存在类似于 C://windows//cookies的目录下。当用户再次访问某个站点时,服务端将要求浏览器查找并返回先前发送的Cookie信息,来识别这个用 户。
cookies给网站和用户带来的好处非常多:
1、Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径
2、Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告
3、Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点
4、Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务
在JSP中,我们也可以使用Cookie,来编写一些功能强大的应用程序。
下面,我想介绍一下如何用JSP创建和处理Cookie。
二.如何创建Cookie
import="javax.servlet.http.Cookie"
说了这么多,大家一定很想知道JSP是如何创建cookie了。JSP是使用如下的语法格式来创建cookie的:
Cookie cookie_name =new Cookie("Parameter","Value");
例如:
Cookie username_Cookie =new Cookie("username","waynezheng");
response.addCookie(username_Cookie);
解释:JSP是调用Cookie对象相应的构造函数Cookie(name,value)用合适的名字和值来创建Cookie,然后Cookie可以通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头,
本例中Cookie对象有两个字符串参数:username,waynezheng。注意,名字和值都不能包含空白字符以及下列字符:@ : ;? , " / [ ] ( ) =
处理Cookie的属性
看到这里,有的朋友又要问了:我光知道如何创建Cookie有什么用呀?是呀,光知道如何创建Cookie而不知道怎么使用是不够的。
在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出cookie的属性,现在把Cookie的主要属性,及其方法列于下,供大家参考:
类型 |
方法名 |
方法解释 |
String |
getComment() |
返回cookie中注释,如果没有注释的话将返回空值. |
String |
getDomain() |
返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com) |
int |
getMaxAge() |
返回Cookie过期之前的最大时间,以秒计算。 |
String |
getName() |
返回Cookie的名字。名字和值是我们始终关心的两个部分,笔者会在后面详细介绍 getName/setName。 |
String |
getPath() |
返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。 |
boolean |
getSecure() |
如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。 |
String |
getValue() |
返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。 |
int |
getVersion() |
返回Cookie所遵从的协议版本。 |
void |
setComment(String purpose) |
设置cookie中注释。 |
void |
setDomain(String pattern) |
设置cookie中Cookie适用的域名 |
void |
setMaxAge(int expiry) |
以秒计算,设置Cookie过期时间。 |
void |
setPath(String uri) |
指定Cookie适用的路径。 |
void |
setSecure(boolean flag) |
指出浏览器使用的安全协议,例如HTTPS或SSL。 |
void |
setValue(String newValue) |
cookie创建后设置一个新的值。 |
void |
setVersion(int v) |
设置Cookie所遵从的协议版本。 |
读取客户端的Cookie
在Cookie发送到客户端前,先要创建一个Cookie,然后用addCookie方法发送一个HTTP Header。JSP将调用request.getCookies()从客户端读入Cookie,getCookies()方法返回一个HTTP请求头中的内容对应的Cookie对象数组。你只需要用循环访问该数组的各个元素,调用getName方法检查各个Cookie的名字,直至找到目标Cookie,然后对该Cookie调用getValue方法取得与指定名字关联的值。
例如
<%
//从提交的HTML表单中获取,用户名
String userName=request.getParameter("username");
//以"username", userName 值/对 创建一个Cookie
Cookie theUsername=new Cookie("username",userName);
response.addCookie(theUsername);
%>
..............
<%
Cookie myCookie[]=request.getCookies();//创建一个Cookie对象数组
for(int n=0;n=cookie.length-1;i++);//设立一个循环,来访问Cookie对象数组的每一个元素
Cookie newCookie= myCookie[n];
if(newCookie.getName().equals("username")); //判断元素的值是否为username中的值
{%>
你好,<%=newCookie.getValue()%>!//如果找到后,向他问好
<%}
%>
设置Cookie的存在时间,及删除Cookie
在JSP中,使用setMaxAge(int expiry)方法来设置Cookie的存在时间,参数expiry应是一个整数。正值表示cookie将在这么多秒以后失效。注意这个值是cookie将要存在的最大时间,而不是cookie现在的存在时间。负值表示当浏览器关闭时,Cookie将会被删除。零值则是要删除该Cookie。如:
<%
Cookie deleteNewCookie=new Cookie("newcookie",null);
deleteNewCookie.setMaxAge(0); //删除该Cookie
deleteNewCookie.setPath("/");
response.addCookie(deleteNewCookie);
%>
一、 前言
说起来,Cookie应该是一种应用较久的技术了。早在HTML刚刚出现的时候,在每个独立的页面之间没有办法记录和标识不同的用户。后来人们就发明了 Cookie技术,当用户访问网页时,它能够在访问者的机器上创立一个文件,我们把它叫作Cookie,写一段内容进去,来标识不同的用户。如果下次用户 再访问这个网页的时候,它又能够读出这个文件里面的内容,这样网页就知道上次这个用户已经访问过该网页了。
虽然现在网页的制作技术比起几年以前已经发展了许多。不过有些时候,Cookie还是能够帮我们很多忙的。接下来,我们就来看看,如何在写JSP文件的时候,用JSP操作Cookie。
=======================================
二、 保存写入Cookie
其实用JSP操作Cookie是非常简单的,我们来看下面一段JSP程序:
........(中间略)
//保存写入Cookie
<%
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName, "Test_Content");
cookie.setMaxAge(10); //存活期为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,并将所有的Cookie放到一个cookie对象数组里面
Cookie sCookie=null;
String svalue=null;
String sname=null;
for(int i=0;i<cookies.length-1;i++{ //用一个循环语句遍历刚才建立的Cookie对象数组
sCookie=cookies[i]; //取出数组中的一个Cookie对象
sname=sCookie.getName(); //取得这个Cookie的名字
svalue=sCookie.getValue(); //取得这个Cookie的内容
%>
<%
}
%>
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的内容中尽量避免使用这些字符。(
3.cookie的删除
cookie为什么删除不了,所以写了给小总结,希望对用cookie的各位兄弟有帮助
对于cookie,最主要的当然是读取和设置了,下面分两方面说明.
一、设置
Cookie是通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头中的
例如:
Cookie userCookie = new Cookie("user", "admin");
response.addCookie(userCookie);
和设置有关系的还有以下两个重要方法
1.setMaxAge
设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,而且这些Cookie不会保存到磁盘上。
注意:删除cookie就是通过该方法实现的。将要删除的cookie的过期之前的时间指定为0就可以达到删除该cookie的目的。
2.setPath
设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面(JSP页面或者Servlet的映射)所在目录及其子目录下的所有页面。
注意:
A:所有的cookie都是有路径的
B:该方法设置的路径为客户端路径,即“/”代表服务器根目录,而不是WEB应用根目录
C:该方法设置路径时,“/myWeb/”与“/myWeb”是不同的,要特别注意;前者可以关联到服务器的myWeb目录下,而或者则不可以。
D: 该方法设置路径时,没有相对目录可言,即不论在哪个目录下设置setPath(“/myWeb/”),该cookie都将关联到服务器的myWeb目录下 (setPath(“/myWeb”)则不可以),而不是当前目录的myWeb的子目录下;同样,设置setPath(“myWeb/”)和 setPath(“myWeb”)也不能关联到当前目录的myWeb的子目录下
这里有个奇怪的例子,就是在一个web应用下设置的cookie可以在另一个web应用下获得(两个web应用在同一个服务器下)
目录结构:在服务器根目录上有web1和web2两个目录,在web1下有setcookie.jsp和getcookie.jsp、在web2下有getcookie.jsp
web1下的setcookie.jsp
web1下的getcookie.jsp
web2下的getcookie.jsp
先 访问web1下的setcookie.jsp,然后分别访问web1和web2下面的getcookie.jsp文件,你会发现奇怪的现象,web1下的 getcookie.jsp中user为空而web2下的getcookie.jsp中user却有值,这就实现了从一个web应用下设置的cookie 在另一个web应用下获得。
大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)
二、读取
从 客户端读取Cookie时调用的是HttpServletRequest的getCookies方法。该方法返回一个与HTTP请求头中的内容对应的 Cookie对象数组。得到这个数组之后,一般是用循环访问其中的各个元素,调用getName检查各个Cookie的名字,直至找到目标Cookie。 然后对这个目标Cookie调用getValue,根据获得的结果进行其他处理。
注意:若JSP和Servlet所在目录(Servlet为其映射目录)的父目录中有同名cookie,则request.getCookie()方法得到的Cookie数组中保存的是其父目录中的cookie的信息;
发表评论
-
Singleton 单例模式很多种写法
2012-09-13 11:42 1211以前我就知道单例模式的两种写法,如今经发现那两种是 ... -
java5线程框架Executor 排程定时功能
2012-09-06 10:56 10291,带有排程功能的例子 ... -
hessian教程
2012-09-01 12:29 1699转载 http://www.buildapp.net/java ... -
Nginx负载均衡Tomcat简单配置
2012-08-02 15:30 1471很久没练习负载均衡的配置了,真的被遗忘了。生活的环境总在 ... -
Sitemesh例子分享
2012-04-12 14:51 2483sitemesh是表现层的技术,它将公用的部分抽出来了,就不用 ... -
导出excel 的问题 防止自动转科学计数法格式
2011-11-15 13:37 2645关于eXtremeComponents 导出excel 的问题 ... -
JAVA System.getProperty()参数大全
2011-10-08 13:00 1168JAVA System.getProperty()参数大全 ... -
Java通过XML Schema校验XML
2011-10-08 10:37 1177Java通过XML Schema校验XML XML的校 ... -
C语言中拆分人民币面值的题
2011-09-17 16:16 1502目前人民币共有以下几种面值(不包括角和分):1,2,5,10, ... -
用FindBugs分析代码漏洞
2011-08-31 09:00 1653hyddd原创,转载请说明! FindBugs是 ... -
表格一对多,动态显示
2011-08-18 09:56 1127今天一大早就看到一个朋友向我求助,如何实现那样一种显示方式,我 ... -
Java Map遍历的各种方法
2011-08-18 09:44 1105//最常规的一种遍历方法,最常规就是最常用的,虽然不复杂,但很 ... -
Apache与Tomcat的安装和桥接
2011-08-05 18:03 11431、首先安装Apache:./co ... -
Quartz 定时任务web使用
2011-08-05 17:58 1533首先创建一个Web项目,将quartz-1.6.0.jar,以 ... -
Hadoop学习笔记一
2011-07-29 16:07 971这里先大致介绍一下Hadoop. 本文大部分内容 ... -
CAS SSO 例子 笔记 (原创-梁健)
2011-07-20 17:32 8251先说写心情一下: 去年在第一家公司做的那个项目使用是 ... -
ant命令总结
2011-07-08 11:18 9241 Ant是什么? Apache Ant 是一个基于 Ja ... -
Java二维数组实现简单Map
2011-06-22 17:49 4765这些天频繁的在使用二维数组,让我觉得二维数组要比Map更灵活多 ... -
抓取防爬虫的网站信息(梁健-原创)
2011-06-21 11:11 1922有的网站限制网络爬虫的抓取,例如javaeye。会出现 ... -
Java模拟Post表单提交 302 302 HTTP1.0 HTTP1.1问题解决
2011-06-01 10:17 6789最近遇到了302和301,还有HTTP1.0和HTTP1.1的 ...
相关推荐
**IE COOKIES查看工具及说明教程** 在互联网浏览过程中,网站为了记住用户的信息和偏好,通常会使用一种名为"Cookies"的技术。这些小型文本文件存储在用户的计算机上,为用户提供个性化的体验,如自动登录、保存...
本篇文章将详细介绍如何在IE浏览器中开启对网页Cookies的接受,以便能够正常浏览那些依赖Cookies的网站。 首先,你需要知道为什么有时会遇到无法打开Cookies的情况。这通常是因为浏览器的隐私设置过高,或者用户已...
本篇将详细解析如何利用C#和Cookies来实现这一功能。 首先,我们来看标题中的核心概念:C#防止重复操作和C#+Cookies防止重复操作。在C#的Web应用中,通常使用ASP.NET框架。当用户进行投票、点赞或评论等操作时,...
5. 阅读文档:`readme.txt`文件通常包含关于工具的使用说明和注意事项,建议在使用前仔细阅读。 **四、安全与隐私** 虽然IE Cookies查看工具提供了一种便捷的管理方式,但用户仍需谨慎对待Cookie的使用。不要随意...
5. **查看和管理Cookies**:通过浏览器的设置菜单,用户通常可以直接查看和管理cookies,但使用专门的cookies查看器可以提供更详细的控制和便捷的操作。 6. **隐私设置**:浏览器通常允许用户调整对cookies的接受...
"下载及使用说明.txt"文件应包含详细的步骤和注意事项,帮助你理解和使用这些源码。 通过学习和实践这些Java HTTP Cookies操作,你将能够更好地处理用户会话和状态管理,为Web应用程序提供更加流畅的用户体验。记住...
源码中的具体实现会详细说明这些步骤,包括错误处理和异常处理机制。 学习这部分源码,可以加深对易语言操作文件和系统API的理解,同时也能掌握获取和处理Cookies信息的基本方法。对于想要涉足网络编程或者网页自动...
8. **补丁说明**:补丁说明.txt文件可能包含了关于程序更新、修复或优化的详细信息,帮助用户了解新版本的变化。 9. **建站无忧jz5u.com说明.txt**:这个文件可能是来自建站无忧jz5u.com的额外说明,可能包含该工具...
4. 黑鹰说明.txt - 这是工具的说明文档,很可能提供了关于如何使用“黑鹰cookies查看”功能的详细步骤和指南。 5. 3800hk.com.url - 这是一个网址快捷方式,可能指向与“黑鹰”工具或3800HK相关的一个网站,用户可以...
2. **license.txt** - 这个文件通常包含了软件的许可协议,详细说明用户可以如何使用该软件,以及软件的版权信息。 3. **readme.txt** - 这是一个常见的文档,包含软件的使用说明、安装指南、常见问题解答等信息。...
源码使用说明.txt文件则提供了详细的使用指南,包括如何导入和调用这些模块,如何编写代码来管理Cookies,以及可能遇到的问题和解决方案。这将帮助开发者更好地理解和应用这套源码。 使用这套源码,开发者可以实现...
接下来,我们将详细介绍几种常见的使用 JavaScript 操作 Cookies 的方法。 ##### 3.1 设置 Cookies ```javascript function setCookie(name, value, time) { var strSec = getSec(time); var exp = new Date(); ...
同时,`说明.htm`文件可能包含了关于这个插件的详细使用指南和注意事项,建议在实际使用前查阅。 总的来说,`jquery.cookies.js`是jQuery生态系统中的一个强大工具,它让前端开发者能够更加便捷地管理和操作Cookie...
本程序主要分为五个页面,详细说明如下: ① 主页 实现与登录、注册页面的相互跳转,并可实现通过Cookies快速登录 ② 登录页面 实现登录功能,并可以与注册页面与主页进行相互跳转。 ③ 注册页面 实现注册功能,...
### 清理计算机文件详细说明 在日常使用电脑的过程中,随着时间的推移,我们的计算机往往会积累大量的临时文件、缓存数据以及其他不必要的文件,这些文件不仅占用了宝贵的硬盘空间,还可能影响系统的性能与稳定性。...
### HttpWatch安装及使用说明 #### 一、HttpWatch简介 HttpWatch是一款强大的网页数据分析工具,主要用于帮助开发者深入了解网页加载过程中的各种细节。该工具直接集成在Internet Explorer工具栏中,便于用户随时...
根据提供的文件信息,我们可以推断出这是一套与PHP相关的毕业设计资料,包含了论文、源码及使用说明等。下面将对这套资料所涉及的重要知识点进行详细的解析。 ### PHP简介 PHP是一种广泛使用的开源服务器端脚本...