Cookie

一、Cookie概述

服务器给客户端并且存在客户端(浏览器)上的一份小数据

  • 应用场景:

    自动登录、浏览记录、浏览器

  • 为什么有这个Cookie

    http的请求是无状态。 客户端与服务器在通讯的时候是无状态,其实就是客户端在第二次来访的时候,服务器根本就不知道这个客户端以前有没有来访问过。 为了更好的用户体验,更好的交互 [自动登录],其实从公司层面讲,就是为了更好的收集用户习惯[出现了大数据]。


二、Cookie应用

1. 服务器–生成一个cookie(response.addCookie())

主要是使用Cookie创建一个对象,然后对象调用addCookie()方法就可以添加。
第二次打开浏览器就会在http(客户端收到消息)中加一个 Set-Cookie:选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Demo01 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf");//response添加中文的方法

Cookie cookie=new Cookie("aa","bb");
//给响应添加一个cookie
response.addCookie(cookie);

response.getWriter().write("成功了!");

}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}

2. 客户端–遍历(for循环)所有的cookie(request.getCookies())

主要代码:

1
2
3
4
5
6
7
8
9
10
Cookie[] cookies = request.getCookies();  //客户端request.getCookies获取
if(cookies !=null)
{
for(Cookie c:cookies) //增强for循环输出
{
String value = c.getValue(); 使用get方法获取cookie的信息
String name = c.getName();
System.out.println(name+" "+value);
}
}

完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Demo01 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf");//response添加中文的方法
//方法参数要什么就给什么
//创建对象几种方法: 1. 直接new 2. 单例模式/提供静态方法 3. 工厂模式构建 StuFactory StuBuilder

Cookie cookie=new Cookie("aa","bb");

//服务器端给客户端添加一个cookie
response.addCookie(cookie);

response.getWriter().write("成功了!");

//获取客户端带过来的cookie
Cookie[] cookies = request.getCookies();
if(cookies !=null)
{
for(Cookie c:cookies)
{
String value = c.getValue();
String name = c.getName();
System.out.println(name+" "+value);
}
}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}

3. 给cookie设置有效期(setMaxAge())以及指定域名打开(setDomain)和指定路径(setPath)

  • 3.1有效期–cookie.setMaxAge()

    1.一般不设置的话默认----关闭浏览器,cookie就消失
    2.设置的话:
            2.1:正值:过了这个值就失效
            2.2:负值:(默认-1) 关闭浏览器,cookie就消失
  • 3.2域名–cookie.setDomain(“.xxxx.com”)

  • 3.3域名下的路径–cookie.setPath(“/yyy”)

    两者合在一起就是给ww.xxxx.com/yyy/这个地址才可以增加cookie

主要代码如下:(已经有创建了一个cookie)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//先写cookie对象
Cookie cookie=new Cookie("name","zhangsan");

//创建cookie的有限期
//cookie的有效期没有设置的话默认是关闭浏览器就没有了
//正值:在这个时间后就失效
//负值:默认-1.关闭浏览器就会失效
cookie.setMaxAge(60*60*24*7); //以秒为单位

//设置指定域名才会带上cookie
cookie.setDomain(".larkkkkkkk.com");
//设置访问该域名下的lark路径才会带上cookie ----相当于 www.larkkkkkkk.com/lark/
cookie.setPath("/lark");

response.addCookie(cookie);//服务器response添加一个cookie

完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package Servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo02 extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//客户端request遍历所有cookie信息
Cookie[] cookies = request.getCookies(); //request获取所有的cookie
if(cookies !=null)
{
for (Cookie cookie :cookies)
{
System.out.println(cookie.getName()+" = "+cookie.getValue());
}
}

//先写cookie对象
Cookie cookie=new Cookie("name","zhangsan");

//创建cookie的有限期
//cookie的有效期没有设置的话默认是关闭浏览器就没有了
//正值:在这个时间后就失效
//负值:默认-1.关闭浏览器就会失效
cookie.setMaxAge(60*60*24*7); //以秒为单位

//设置指定域名才会带上cookie
cookie.setDomain(".larkkkkkkk.com");

//设置访问该域名下的lark路径才会带上cookie ----相当于 www.larkkkkkkk.com/lark/
cookie.setPath("/lark");

response.addCookie(cookie);//服务器response添加一个cookie


//cookie2对象
Cookie cookie2=new Cookie("age","18");
response.addCookie(cookie2);//服务器response添加一个cookie


response.getWriter().write("hello Cookie..."); //响应给浏览器展示
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 一、Cookie概述
  2. 2. 二、Cookie应用
    1. 2.1. 1. 服务器–生成一个cookie(response.addCookie())
    2. 2.2. 2. 客户端–遍历(for循环)所有的cookie(request.getCookies())
    3. 2.3. 3. 给cookie设置有效期(setMaxAge())以及指定域名打开(setDomain)和指定路径(setPath)
,