Cookie基本介绍
1.Http协议
Http协议两个缺陷:
1.HTTP协议是纯文本的
2.HTTP协议是无状态的
服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户
虽然通过HTTP协议不能区分不同请求是否来同一用户,但是我们实际生活却有这样的需求。
2. Cookie
简介:
(1)我们想可以通过服务器向浏览器发送一个类似票的东西,
浏览器在访问服务器时就可以拿着票来访问
服务器就可以根据这个票来识别不同的用户。
(2)服务器发送给浏览器的这张票我们称为Cookie。
(3)Cookie的使用流程:
①.服务器先要创建Cookie
②.将Cookie发送给浏览器
③.浏览器带着Cookie访问服务器
④.服务器检查浏览器的Cookie
(4)Cookie实际上就是一个头
服务器通过响应头将Cookie发送给浏览器,
浏览器通过请求头将Cookie发回给服务器,
服务器可以根据不同的Cookie来识别不同的用户。
(5)使用Cookie
① 创建Cookie
Cookie cookie = new Cookie(name,value);
② 发送Cookie
response.addCookie(cookie);
注意:可以发送多个cookie!
③ 读取Cookie
request.getCookies(); 返回的是一个Cookie数组。
- 虽然Cookie是一个键值对结构,但是它并没有给咱们提供一个根据键获取值的方法。
我们要想读取Cookie的信息,只能通过遍历数组。
④ 修改Cookie
一旦Cookie发给浏览器以后,服务器便不能直接修改Cookie,
但是可以通过使用同名Cookie来替换的老Cookie方式来间接的修改
(6) Cookie的有效时间
①Cookie的默认有效时间为一次会话,当关闭浏览器时,Cookie将失效。
②通过setMaxAge(秒数)来设置Cookie的有效时间
③当秒数大于0时,有效时间会设置为相应的秒数
cookie.setMaxAge(30);
④当秒数等于0时,代表Cookie立即失效,浏览器不会保存。
cookie.setMaxAge(0);
⑤当秒数小于0时,和不设置是一样,一次会话中有效
cookie.setMaxAge(-100);
⑥设置一个长久有效的Cookie
cookie.setMaxAge(60*60*24*365*10)
⑦在程序中使Cookie立即失效
- 可以使用一个同名的,立即失效的Cookie来替换已有Cookie
注意:不建议在cookie中传递中文,会用base64编码!
代码示例:
1 package com.neuedu.cookie; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.Cookie; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 12 public class CookieServlet extends HttpServlet { 13 private static final long serialVersionUID = 1L; 14 15 16 public CookieServlet() { 17 super(); 18 19 } 20 21 22 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 23 24 Cookie cookie=new Cookie("gender", "male"); //创建Cookie 25 cookie.setMaxAge(60*3); //设置Cookie的有效时间 26 response.addCookie(cookie); //发送Cookie 27 Cookie[] cookies = request.getCookies(); //读取Cookie 28 if(cookies!=null){ 29 for(int i=0;i<cookies.length;i++){ 30 if("gender".equals(cookies[i].getName())){ 31 cookies[i].setValue("female"); //修改cookie信息 32 response.addCookie(cookies[i]); 33 } 34 } 35 } 36 37 38 } 39 40 41 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 42 doGet(request, response); 43 } 44 45 }
通过火狐浏览器查看Cookie信息
(7) Cookie的Path
path指的Cookie的路径
所谓的Cookie路径就是指,浏览器在访问哪些地址时会携带Cookie。
①Cookie默认有效路径是项目的根目录,只要访问当前项目下的资源就会带着Cookie
②通过setPath()方法来设置Cookie有效路径
③修改Cookie的有效路径
//Cookie的路径由浏览器解析,所以设置路径时需要加上项目名
cookie.setPath(request.getContextPath()+"/hello");
(8)Cookie 应用:
1.可以用来保持用户的登录状态
2.可以用来记录用户上次输入的用户名
3.广告的推送
posted on 2017-12-27 00:00 ALWAYS☆REMIND 阅读(810) 评论(0) 编辑 收藏 举报