Servlet编程专题5之Cookie

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet编程专题5之Cookie相关的知识,希望对你有一定的参考价值。

1、Cookie简介:

-  Cookie是1993年由网景公司(Netscape)前雇员发明的一种进行网络会话状态跟踪的技术。

-  会话则是由一组请求和响应组成,是围绕着一件相关事情所进行的请求和响应。所以这些请求和响应之间一定是需要有数据传递的,即是需要进行会话状态跟踪的。然而HTTP协议是一种无状态协议,在不同的请求间是无法进行数据传递的。此时就需要一种可以进行请求间数据传递的会话跟踪技术,而Cookie就是一种这样的技术。

-  Cookie是由服务器生成的,保存在客户端的一种信息载体。这个载体中存放着用户访问该站点的会话状态信息。只要Cookie没有被清空,或者Cookie没有失效,那么保存在其中的会话状态就会有效。

-  用户在提交第一次请求后,由服务器生成Cookie,并将其封装到响应头中,以响应的形式发送给客户端。客户端接收到这个响应后,将Cookie保存到客户端中。当客户端再次发送同类请求后,在请求中会携带保存在客户端的Cookie数据,发送到服务端,由服务器对会话进行跟踪。

-  Cookie技术并不是JavaWeb开发专属技术,而是属于Web开发的技术,是所有Web开发语言均支持的技术。

-  Cookie是由若干键值对构成的,这里的键一般称为name,值称为value。Cookie中的键值对均为字符串。


2、火狐下查看Cookie:

-  不同的浏览器,其Cookie的保存位置以及查看方式是不同的。删除了某一浏览器下的Cookie,不会影响到其他浏览器中的Cookie。

-  在火狐浏览器下可以直接查看到Cookie的信息,其查看的位置在:选项 -> 隐私与安全中 -》移除特定网站的Cookie

技术分享

技术分享


3、JavaEE中的Cookie:

-  在JavaEE中的javax.servlet.http包中存在一个类Cookie,就是用于完成会话跟踪的Cookie。其只有一个带参构造器:

技术分享

-  而

javax.servlet.http.HttpServletResponse接口中有一个方法,可以将Cookie添加到响应头中:

技术分享

-  主要注意的是,一个response中可以添加多个Cookie的键值对。


a、默认绑定的路径:访问路径由资源路径和资源名称构成。默认情况下,Cookie与访问路径中的资源路径绑定。只要用户发出带有绑定资源路径的请求,则在请求头部,将自动会携带与之绑定的Cookie数据。

-  Cookie类中可以指定Cookie绑定路径:(需要注意的是,这里指定的路径必须要求添加项目名称)


技术分享

-  如:

技术分享


b、Cookie的有效期(存放到缓存或者是硬盘上的问题):使用addCookie(Cookie cookie)方法在浏览器中添加的Cookie默认是写在缓存中,可以使用setMaxAge(int expiry)方法设置Cookie的有效期。

-  传入的值为一个整型值(单位为秒)。当该值大于0,表示将Cookie存放到客户端的硬盘中;该值小于0,与不设置的效果相同,会将Cookie存放到浏览器的缓存中;该值等于0,表示Cookie一生成,马上失效:

技术分享


c、服务器获取和解析Cookie:

javax.servlet.http.HttpServletRequest接口中的getCookies()方法:返回客户端发送请求所包含的所有Cookie对象,以数组的形式返回。

技术分享

-  javax.servlet.http.Cookie类中的getName()方法和getValue()方法,用于获取cookie对象的名字和值:

技术分享

技术分享

-  示例代码如下:

技术分享


4、火狐中如何禁用Cookie:选项 -> 隐私与安全 -> 历史记录 -> 使用自定义设置 -> 不勾选“接受来自网站的Cookie”

技术分享

技术分享




本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1976266

以上是关于Servlet编程专题5之Cookie的主要内容,如果未能解决你的问题,请参考以下文章

Servlet编程专题10之Servlet3.0注解

Servlet编程专题4之Servlet核心

Servlet编程专题1之Servlet生命周期

Servlet编程专题2之获取ServletConfig对象

Servlet编程专题9之Servlet规范中的过滤器

Servlet编程专题11之Servlet3.0特性实现文件上传