Servlet学习之Cookie
来源:互联网 发布:专业电气制图软件 编辑:程序博客网 时间:2024/04/28 13:50
Servlet学习之Cookie
转载请注明出处:http://write.blog.csdn.net/mdeditor#!postId=77284800
预备知识
什么是一次web会话?
会话是web技术中的一个术语,可以简单的理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,这个过程称为一个会话。
如果在打开一个浏览器访问一个页面后,再打开一个浏览器访问同一个页面,那这就是有两个会话;而打开一个浏览器访问一个页面后,通过这个页面上的某个超链接是从新的浏览器打开的,那依然只算一个会话。
Cookie
什么是Cookie
Cookies 是存储在客户端计算机上的一小段文本文件,并保留了各种跟踪信息。伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息
Cookie的作用
我们在浏览器中,经常涉及到数据的交换,比如你登录邮箱,登录一个页面。我们经常会在此时设置30天内记住我,或者自动登录选项。那么它们是怎么记录信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP服务器设置的,保存在浏览器中,但HTTP协议是一种无状态协议,在数据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接。就像我们去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们办了积分卡之后,超市就有了我们的消费信息。cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程。
Cookie常用场景
1.记录用户的事件
2.浏览历史记录
3.用户名和密码的记录
等待
Cookie的分类
cookie分为会话cookie和持久cookie,会话cookie是指在不设定它的生命周期expires时的状态,前面说了,浏览器的开启到关闭就是一次会话,当关闭浏览器时,会话cookie就会跟随浏览器而销毁。当关闭一个页面时,不影响会话cookie的销毁。会话cookie就像我们没有办理积分卡时,单一的买卖过程,离开之后,信息则销毁。
持久cookie则是设定了它的生命周期expires,此时,cookie像商品一样,有个保质期,关闭浏览器之后,它不会销毁,直到设定的过期时间。对于持久cookie,可以在同一个浏览器中传递数据,比如,你在打开一个淘宝页面登陆后,你在点开一个商品页面,依然是登录状态,即便你关闭了浏览器,再次开启浏览器,依然会是登录状态。这就是因为cookie自动将数据传送到服务器端,在反馈回来的结果。持久cookie就像是我们办理了一张积分卡,即便离开,信息一直保留,直到时间到期,信息销毁。
Cookie的细节知识
1.cookie是在服务端创建的
2.cookie是保存在浏览器这端的
3.cookie的生命周期可以通过cookie.setMaxAge();如果不设置,关闭浏览器就destroy了
4.cookie可以被多个浏览器共享
5.怎么理解:把cookie假设成一张表 名字(String):值(String)。所有共享这张表,名字如果重复了就会替换掉存在的cookie值。
6.一个WEB应用可以保存多个cookie
7.cookie存放的时候是以明文方式存放的,因此安全比较低,我们可以通过加密后保存,可以用md5(不可逆)算法加密(想起了base64),经过md5加密后存放到数据库,用户输入密码后加密然后再和数据库里面的匹配。
8.一个web应用可以给浏览器发送多个cookie,一个浏览器可以存储多个web应用提供的cookie。一般只允许存放300个cookie,每个web应用最多放 20个,每个cookie大小4KB,因此不会塞满硬盘,也不会被用作“拒绝服务”攻击手段。
9.cookie的默认生命周期是会话级别的,关闭浏览器后就被删除,可以通过setMaxAge()设置cookie 的生命周期。setMaxAge(0)删除该cookie:要保持path一致,否则无法删除,
如何使用Cookie
Servlet Cookies 方法
以下是在 Servlet 中操作 Cookies 时可使用的有用的方法列表。
在Servlet中设置Cookie
1.创建Cookie
Cookie cookie = new Cookie("key","value");//只能传入String类型,不能传入对象,见API
2.通过setMaxAge()来设置Cookie的生命周期
cookie.setMaxAge(7*24*3600);//括号内表示Cookie的最大到期时间,cookie.setMaxAge(-1));//当Web浏览器退出时将被删除。零值会导致cookie被删除。
3.设置cookie路径
cookie.setPath(String url);
4.发送 Cookie 到 HTTP 响应头:可以使用 response.addCookie来添加 HTTP 响应头中的 Cookies,如下所示:
response.addCookie(cookie);
在Servlet中获取Cookie
要读取 Cookies,您需要通过调用 HttpServletRequest 的 getCookies( ) 方法创建一个 javax.servlet.http.Cookie 对象的数组。然后循环遍历数组,并使用 getName() 和 getValue() 方法来访问每个 cookie 和关联的值。
Cookie[] cookies = null;// 获取与该域相关的 Cookies 的数组cookies = request.getCookies();for(Cookie cookie : cookies){ //通过getName()和getValue()方法取出cookie的键和值 String name = cookie.getName(); String value = cookie.getValue();}
删除Cookie
删除 Cookies 是非常简单的。如果您想删除一个 cookie,那么您只需要按照以下三个步骤进行:
- 读取一个现有的 cookie,并把它存储在 Cookie 对象中。
- 使用 setMaxAge() 方法设置 cookie 的年龄为零,来删除现有的 cookie。
- 把这个 cookie 添加到响应头。
//这里的cookie可以通过上述获取方法来获取,并根据getName()返回的值进行判断,当前获取的cookie是否为目标cookiecookie.setMaxAge(0);response.addCoookie(cookie);//必须带,相当于执行语句
- Servlet学习之cookie
- Servlet学习之Cookie
- Servlet学习之Cookie详解
- Servlet学习之六cookie的用法
- servlet学习之servlet中cookie和session的介绍
- Servlet学习:Cookie练习
- java学习之Servlet之--Cookie,Session,Application
- Servlet 之Cookie、Session
- Servlet之Cookie
- Servlet之cookie处理
- 【复习】servlet之cookie
- servlet之cookie
- Servlet之Cookie
- 20160403servlet学习笔记会话技术之cookie
- Servlet学习(五)Cookie
- Servlet学习-会话技术cookie
- servlet之session和cookie
- Servlet之Cookie相关操作
- Git学习笔记(一)
- Nvidia 1050 ubuntu16.04 黑屏解决,CUDA安装
- [PAT甲级]1004. Counting Leaves (30)(求树各层非叶子节点数目)
- SpringMvc 关于 EXCEL
- Application Programming Interfaces -- 2
- Servlet学习之Cookie
- hdu 2089(初学数位DP)
- Codeforces Round #386 (Div. 2) C. Tram
- HDU2057(__int64 与long long 的区别)
- LINUX C++实现简单的http get请求客户机
- JUnit4-FailOnTimeout.java的源代码 解读与分析
- 关于R语言中的merge和cbind功能的用法
- OHUI V52.0 Demo
- 详解 JavaScript的 call() 和 apply()