目录
简介
会话:
会话跟踪:
实现方式:

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("-------------");
        }
    }
}










