1) 创建Cookie对象,
public Cookie(java.lang.String name,
java.lang.String value)
参数1:表示cookie名称
参数2:表示cookie名称对应的内容
2) 发送cookie数据(服务器发送cookie数据到浏览器中)
set-cookie:请求头: 携带内容(最基本的方式)
简写方式:服务器发送Cookie
void addCookie(Cookie cookie)
3) 服务器会携带cookie到浏览器(自发:浏览器自发的将cookie保存起来),方便下一次服务器传递数据
4) 服务器获取cookie数据
原理:获取的请求头:cookie名称获取内容(最基本的)
简写方式:
Cookie[] getCookies()

Cookie技术的一些细节:
1) 细节1:当前浏览器中发现中文cookie 数据,获取cooike名称对应的内容,需要进行解密(同时,对中文进行加密)
使用的是两个工具类:URLEncorder类和URLDecorder类
2) 细节2:设置cookie的有效时间
public void setMaxAge(int expiry) :
参数分为三种情况:
1) 如果参数为正整数,表示多少秒之后,cookie数据失效了(不存在了)
2) 如果参数是一个负整数,一般情况指定-1,关闭浏览器,cookie就不存在了
3) 如果参数是一个0,那么指定同名的cookie的名称,然后该cookie数据会被删除掉!
4) 细节3:cookie的有效路径
public void setPath(java.lang.String uri):当前cookie的数据是在有效路径下才会起作用,否则,获取不到cookie数据

一般情况:一个站点可以存储多少个cookie数据,不超过300个,可能用到20个作用

public class CookieDemo extends HttpServlet {
    private static final long serialVersionUID = 1L;

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

        //创建cookie对象
        Cookie coo = new Cookie("name","Rong");

        //中文格式
        String name = URLEncoder.encode("蓉","utf-8");
        Cookie coo2 = new Cookie("name", name);

        //设置有效路径
//      coo.setPath("/Develop_Servlet_Cookie001");
//      coo2.setPath("/Develop_Servlet_Cookie002");
        //简写,发送到浏览器
//      response.addCookie(coo);
        response.addCookie(coo2);

        //-1:关闭浏览器就删除cookie。正整数:保存时间
        coo.setMaxAge(-1);
        coo2.setMaxAge(5);

        //获取cookie参数
        Cookie[] cookies = request.getCookies();
        if(cookies!=null){
            for(Cookie cookie:cookies) {
                String coo_name = cookie.getName();
                String coo_value = cookie.getValue();
                //解析获得的值
                String coo_devalue = URLDecoder.decode(coo_value, "utf-8");
                System.out.println("名:"+coo_name+"\t值:"+coo_devalue);
            }
        }


    }

}

输出系统时间和上次登录时间:

public class TimeDemo extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //创建系统时间,格式化时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String CurTime = sdf.format(new Date());

        //获取cookie数据
        Cookie[] cookies = request.getCookies();

        //设立初始值
        String LastTime = null;
        //第一次访问
        if(cookies==null && LastTime==null){


                //输出系统时间
                response.setContentType("text/html;charset=UTF-8");
                response.getWriter().write("第一次系统时间:"+CurTime);

                //编码,创建cookie文件
                String en_time = URLEncoder.encode(CurTime, "utf-8");
                Cookie last_cook = new Cookie("lasttime", CurTime);
                response.addCookie(last_cook);

        }

        //第二次之后访问,遍历输出数据
        if(cookies!=null){
            for(Cookie cookie:cookies){
                //获取数值
                LastTime = cookie.getValue();
                //解码文件
                String de_LTime = URLDecoder.decode(LastTime, "utf-8");
                response.setContentType("text/html;charset=UTF-8");
                response.getWriter().write("上次登录时间"+de_LTime+"<br/>系统时间:"+CurTime);

                //更新时间
                CurTime = URLEncoder.encode(CurTime, "utf-8");
                cookie.setValue(CurTime);
                response.addCookie(cookie);

            }
        }

    }

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

}