0
点赞
收藏
分享

微信扫一扫

Cookie细谈——让你从精神百倍到聊出瞌睡

心智的年轮 2022-02-19 阅读 22

文章目录


文章目录


前言

本次文章主要是记录关于JavaWeb开发中对于Cookie的了解,其可以用于在各种电商平台类项目中的购物车实现中使用以及网页平台中用户登录信息的保存等等。


一、什么是状态管理?

1.1 现有问题的出现

咳咳~ 别打瞌睡,认真记笔记,下课我要检查~~

1.2 状态管理的分类

二、Cookie的使用

2.1 什么是Cookie

2.2 Cookie原理的介绍

2.3 实战部分,Cookie的那些骚操作

@WebServlet("/CookieServlet")
public class CookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //创建Cookie
        //方法: Cookie cookie = new Cookie(key,value);
        Cookie cookie=new Cookie("cookie01","yongzhong");
        //设置Cookie的访问路径
        cookie.setPath("/CookieServlet_war_exploded/get");
        //设置Cookie的有效期(以一个小时为例)
        cookie.setMaxAge(60*60);//有三种取值方式  1、>0有效期单位秒  2、=0浏览器关闭 3、<0内存存储默认为-1
        //添加Cookie并响应给客户端(即前端)
        resp.addCookie(cookie);
        System.out.println("cookie添加完毕!");
    }
}
@WebServlet("/getCookieServlet")
public class getCookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取全部的Cookie
        Cookie[] cookies = req.getCookies();
        if (cookies!=null){
            for (Cookie c:cookies) {
                System.out.println("获取到的CookieName:"+URLDecoder.decode(c.getName(),"UTF-8")+":"+URLDecoder.decode(c.getValue(),"UTF-8"));
            }
        }else{
            System.out.println("cookie已经存在");
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
//创建Cookie
Cookie ck=new Cookie("code",code);
  ck.setPath("/webs");//设置你想设置的路径不需要和我一样
  ck.setMaxAge(-1);//设置为内存存储,三种取值方式:>0的值 就是设置过期时间如设置为60即为1分钟 ;=0    则Cookie失效;<0则为内存存储长期存在
response.addCookie(ck);//让浏览器添加Cookie

2.4 Cookie的编码与解码

编码操作

@WebServlet("/cookieServlet")
public class cookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie(URLEncoder.encode("姓名","UTF-8"),URLEncoder.encode("张三","UTF-8"));
        cookie.setPath("/CookieServlet_war_exploded/get");
        cookie.setMaxAge(600);
        response.addCookie(cookie);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

解码操作

@WebServlet("/getCookieServlet")
public class getCookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取全部的Cookie
        Cookie[] cookies = req.getCookies();
        if (cookies!=null){
            for (Cookie c:cookies) {
                System.out.println("获取到的CookieName:"+URLDecoder.decode(c.getName(),"UTF-8")+":"+URLDecoder.decode(c.getValue(),"UTF-8"));
            }
        }else{
            System.out.println("cookie已经存在");
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

2.5 Cookie的优缺点

优点:

缺点:


总结

文章总结完毕,Cookie知识如上 ,今天到此结束感谢浏览。

举报

相关推荐

0 条评论