一文了解Cookie

江南北

关注

阅读 87

2022-03-11

目录

简介

Cookie基本使用

发送Cookie

?获取Cookie

?Cookie原理

?Cookie使用细节

cookie存活时间

Cookie存储中文


简介

会话:

会话跟踪

实现方式:

Cookie基本使用

Cookie基本使用

发送Cookie

1、创建Cookie对象,设置数据

Cookie cookie=new Cookie("key","value");

2、发送Cookie到客户端:使用response对象

response.addCookie(cookie);

1、在src下创建一个com包下CookieServlet类

package com;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //发送Cookie
        //创建Cookie对象
        Cookie cookie=new Cookie("username", "zhangsan");
        //2、Cookie,response
        resp.addCookie(cookie);
    }
}

2、web.xml配置

    <servlet>
        <servlet-name>CookieServlet</servlet-name>
        <servlet-class>com.CookieServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CookieServlet</servlet-name>
        <url-pattern>/cookieServlet</url-pattern>
    </servlet-mapping>

启动访问即可,f12查看

获取Cookie

Cookie[] cookie=request.getCookie();
cookie.getName();
cookie.getValue();

创建CookieServlet1类,再配置web.xml

package com;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CookieServlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //3、获取cookie数组
        Cookie[] cookies=req.getCookies();
        //4、遍历数组
        for( Cookie cookie1:cookies){
            //5、获取数据
            String name=cookie1.getName();
            String value=cookie1.getValue();
            System.out.println("name="+name+"
value="+value);
            System.out.println("-------------");
        }
    }
}

先访问cookieServlet,在访问cookieServlet1得

Cookie原理

Cookie的实现是基于HTTP协议的

响应头:set-cookie

请求头:cookie

访问时f12查看网络

Cookie使用细节

cookie存活时间

默认情况下,cookie存储在浏览器内存中,当浏览器关闭,内存释放,则cookie被销毁

setMaxAge(int seconds):设置Cookie存活时间

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //发送Cookie
        //创建Cookie对象
        Cookie cookie=new Cookie("username", "zhangsan");
        //设置存活时间 比如一周
        cookie.setMaxAge(60*60*24*7);
        //2、Cookie,response
        resp.addCookie(cookie);


    }

Cookie存储中文

默认情况不支持中文:

CookieServlet类下

public class CookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //发送Cookie
        //创建Cookie对象

        String value="张三";
        //URL编码
         value= URLEncoder.encode(value, "UTF-8");
           Cookie cookie=new Cookie("username", value);
        //设置存活时间 比如一周
        cookie.setMaxAge(60*60*24*7);
        //2、Cookie,response
        resp.addCookie(cookie);


    }
}

CookieServlet1类下

public class CookieServlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //3、获取cookie数组
        Cookie[] cookies=req.getCookies();
        //4、遍历数组
        for( Cookie cookie1:cookies){
            //5、获取数据

            String name=cookie1.getName();
            String value=cookie1.getValue();
            //URL解码
           value=URLDecoder.decode(value,"UTF-8" );
            System.out.println("name="+name+"
value="+value);
            System.out.println("-------------");
        }
    }
}

精彩评论(0)

0 0 举报